前言
本文以一个接口(后文叫接口A)为例,总结性能优化的一些分析思路及工具使用
性能现状
接口A在上次压测结果中的表现如下:
40个线程 压5分钟 rt130 tps290
(随着线程数增加,rt也随之增加,40个线程是比较优的并发数)
性能预估
应用为单个实例,配置为4C8G,DB配置最大可为8C16G
接口A查了5次表,且全部走索引,按照经验预估tps不至于290,应该可以达到1000左右
瓶颈分析与优化
分析思路
先分析接口的调用链路,接口A调用链路比较简单,就查了5次表,并且全部走索引,那么可以先看每次查询的耗时,看是否符合预期;接着可以从CPU、内存、网络带宽、JVM指标等角度分析是否达到瓶颈
链路耗时
通过metrics埋点上报,可以看到平均每次调用DB的耗时达到了30多ms
看到sql耗时偏高,怀疑是否没有走到索引
以其中一个查询为例,使用EXPLAIN分析SQL执行是否走索引,发现sql并没有什么问题: