常见性能问题诊断4步法

本文为课堂总结,感谢老师讲解。

在做性能测试的过程中,总会遇到各种问题,有时会因某个疏忽对现象百思不得其解,现将常见问题和解决思路做个梳理,以便节省时间。

  1. CPU不高,TPS不高
    方向一:客户端的问题
    客户端脚本的问题(ThinkTime不对),过小的请求发往服务端
    客户端到服务端 网络原因,过小的数据发往服务端
    方向二:每个事务的响应时间
    单个事务的响应时间长,则在服务端找消耗时间长的原因。
    单个事务的响应时间短--则是客户端发往服务端的负载不够,加大负载即可。

  2. CPU高,TPS不高
    方向一:系统CPU消耗
    系统CPU消耗高,则看IO,上下文切换
    方向二:用户CPU消耗
    用户CPU消耗高,则看应用哪个线程消耗CPU多。
    方向三:已超过负载
    此时 降低负载,测试看TPS是否有回升,如有回升,则表明之前确实是超负载啦。

top -Hp  #查到消耗高线程ID
printf "%x" ID
jstack -l PID
jstack PID|grep -A 10 52f1   ##printf "%x" ID获取的16进制
  1. 如何找到IO高的文件
    方向一:网络IO
    五种IO模型:阻塞IO、非阻塞IO、IO复用、信号驱动IO、异步IO
    方向二:磁盘IO
    可用iotop查看磁盘io使用情况,哪个进程IO比例高,得到进程IO比例高的PID,lsof -p PID
    查看该进程关联的文件,知道是哪个文件后,可以问研发是哪个什么操作这个文件,也可以自己去查代码,或者用jstack去查。

  2. 如何判断内存不够

free -m  #只要观察swap的使用是不是持续增长即可

swap 使用内存持续增长时--内存不够。
swap持续增长时,物理可用内存一般也不会遗留多少,
当应用一直在跑时,肯定会触发因系统内存不足自动杀死应用进程操作。

总结;所有的监控不是为了得到数据,而是为了知道什么地方产生了多少量的数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频...
    Rick617阅读 12,102评论 1 9
  • 这篇文章主要介绍一些常用的linux服务器性能监控命令,包括命令的常用参数、指标的含义以及一些交互操作。 几个问题...
    dancingking阅读 12,610评论 6 22
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,444评论 11 349
  • linux系统性能监视命令,经过百度谷歌,加上各渠道获得,查找到相关命令汇集,望能学有所收获 ...
    _王子_阅读 5,224评论 3 13
  • 夜深黑白无常, 四方走窜,趾高气扬。 刀光剑影银晃晃,魑魅魍魉斩不断。 原是噩梦一场。
    黄小号阅读 1,235评论 5 2