性能测试之后,需要分析性能问题瓶颈所在,最常见的情况,就是服务器cpu或者内存指标过高。但是仅仅是这样,还不够,我们最好可以进一步给研发提供更多的信息,并且最好还能给出自己的一些建议,才会显得测试报告专业。
分析问题简单思路是用分层思想,分析最大可能是哪一层出现瓶颈,然后再具体分析。
这里如果cpu过高,那么,先用top -c,再排序查看下到底是哪个服务占用过高。
一
如果是java应用
1:那么进一步分析师哪个线程,linux上命令不少,比如这个 (ps -mp pid -o THREAD,tid,time) ps -T -mp pid
2:找到了耗时最高的线程,将线程TID转换为16进制格式(printf "%x
" tid)
3:最后使用jstat命令,去打印该线程的堆栈信息(jstack pid |grep tid )
4:到了这里,你需要做的事情有两件,一是自己尝试阅读信息,看能否发现什么问题,二就是将这段信息提交给对应研发分析
二:
如果是c++服务
1:可以用 pstack命令,pstack pid即可。(多使用linux自带命令或者让请研发配合调试)
2:配合其他指标,结合分析可能原因,比如用sar,vmstat查看%sy,iostat,cs,wa,平均负载等等常用信息
以上就是最基本的手段,尽可能一步步分析,最后我想说的是,cpu和内存的问题,很多时候无法单独判断,需要综合分析,以下就是一点简单的关系总结
mpstat
1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3. 若 %idle 的值持续低于10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。