跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • [求助] 一个 SpringBoot+Mysql 项目的性能优化问题
未分類
19 5 月 2020

[求助] 一个 SpringBoot+Mysql 项目的性能优化问题

[求助] 一个 SpringBoot+Mysql 项目的性能优化问题

資深大佬 : fenguxnyu 60

请教大家一个关于 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 分钟。

大家遇到过这种情况么,有什么解决办法可以参考吗?

大佬有話說 (15)

  • 資深大佬 : cheng6563

    是不是有内存泄露,有虚拟内存吗

  • 資深大佬 : wshcdr

    关注这个问题

  • 資深大佬 : phantomzz

    把你们表结构,索引、以及你的查询 sql 发出来。

  • 資深大佬 : phantomzz

    检查你们的 sql 有没有导致全表扫描

  • 主 資深大佬 : fenguxnyu

    @phantomzz explain 看了下,没有哦,如果有的话,慢查询日志应该要记录到啊

  • 資深大佬 : luozic

    上全流程 metric,查看一下是哪里慢了,现在这描述不清楚是数据库慢,还是 Hibernate 慢,还是代码慢。

  • 主 資深大佬 : fenguxnyu

    @luozic 改成 jdbcTemplate 使用裸 sql 去查,还是一样的问题;如果慢查询日志没有大于 1000 毫秒的记录,是不是可以证明 mysql 那端没有大问题?

  • 資深大佬 : pmispig

    用 skywalking 和阿里的阿尔萨斯,但是在这里我要黑一下 skywalikng 的作者太傲慢,以及它在 es 的数据结构太傻逼

  • 資深大佬 : luozic

    @fenguxnyu 这两个接口是否只是查询?

  • 資深大佬 : lewis89

    本地用 jprofiler 试试 可以看每个方法的调用时间

  • 資深大佬 : phantomzz

    检查你索引的结构,你的索引是不是宽索引,有没有导致回表,联合索引和你的 sql 是否匹配,比如是否符合前缀匹配

  • 資深大佬 : Raymon111111

    额外看一下 gc 和 jstack

    当 A 查询需要好几千 ms 的时候用语句直接上 mysql 的 server 执行一下看看需要多久

  • 資深大佬 : zrc

    arthas 可以追查到那个地方耗时比较高
    两个 sql 返回的数据量有多大?
    我觉得还是有必要看下 gc 和堆栈,感觉像是有地方大量引用了数据,导致 gc 回收效率很低

  • 主 資深大佬 : fenguxnyu

    @zrc gc 和堆栈看起来也没什么异常,A 查询出来的记录就一条,B 查询出来的数据量 5 条左右。

  • 主 資深大佬 : fenguxnyu

    @luozic 只是查询

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具