文章转自:作者:全栈测试笔记,https://mp.weixin.qq.com/s?__biz=MzIxMzMxMDcwNA==&mid=2247484089&idx=1&sn=35de1f750c5a8e42f12e48a8535b3963&source=41#wechat_redirect
前几天在用jmeter做性能测试的时候,遇到一个响应时间长的性能问题,简单总结一下,分享给大家,希望能给大家在性能测试过程中类似问题提供一个性能问题分析定位的思路。
根据经验,直奔oracle数据库服务器,top命令一看,负载高,用户cpu将近100%,cpu已经达到性能瓶颈了,shift+p,或者键盘大写状态下按P,将所有进程按cpu使用率从高到低排序,这样,我们关注消耗cpu最多的进程即可
点击下面
可以看到完整的sql语句,是一个多表关联查询语句,它很耗数据库cpu,顺其自然的想到去看下表的索引
查看表,发现where后条件字段不是索引字段
响应时间也只有几十毫秒了
tps从20左右提升到300多,可以说性能提升是相当的明显
总结:sql一直占用cpu切片时间,其它线程就只能等待,服务器负载高,所以响应时间就长了。
声明:部分图片来源于网络,如有侵权,请联系删除。