请教大家一个关于 SpringBoot+Mysql 项目的性能问题。
这边有一个被压测的方法里有两段代码分别是对数据库 A、B 两个表的访问,A 表和 B 表的 Where 条件字段分别加了索引 /联合索引;在每段代码块的前后都打上了计时统计日志,分别记为 LogA 和 LogB;访问数据库用的 Spring JPA+Hibernate,使用了连接池技术初始 50 个链接,最大连接数 500 ; Mysql 版本 8.0。
在压测时发现数据库请求代码块 L 的耗时统计 LogA 会随着压测时间越来越长,一开始是几十 ms,慢慢的上百 ms,最后达到几千 ms ; LogB 大部分是几十 ms,偶尔飙到几百毫秒;导致最后整个接口的 TPS 一百都不到
其中: A 表数量级:30 万条记录
B 表:1 万左右
CPU 占用:维持在 30%以内
内存占用:3%以内
数据库的 max_connections 调整到了 1000
压测并发数是 100,持续 2 分钟。
大家遇到过这种情况么,有什么解决办法可以参考吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.