服务出现明显的变慢,该如何诊断处理?

网站建设3年前发布
32 00

在日常工作中,应用出现性能问题是不可避免的,绝大部分公司都没有专门的性能团队,出现问题还是需要我们自己去排查处理,所以掌握基本的性能知识和技能就显得很有必要,也是开发工程师进阶的必要条件,能否快准狠的定位解决问题,也是对知识、技能和能力的检验。,今天我们来讨论的问题是,服务出现明显的变慢,该如何诊断处理?,首先我们要确定服务是突然变慢还运行一段时间后观察到变慢?类似的变慢是经常出现还是偶发的?还有对慢的定义是什么?是否可以理解为系统对其他方面的请求的延时变长?,在理清楚问题的症状后,更有利于分析问题的具体原因,大概有以下思路:,接下来我们来了解一下业内广泛的性能分析方法论。方法论总结为两类:,我们重点看第一种,自上而下。各个阶段的思路以及使用的工具等。,分析系统的性能,我们常从CPU、内存和IO等入手,这几点是重点关注项。对于CPU,如果是Linux环境,可以先用top命令查看负载情况:,可以看到,平均负载的三个值并不高,也没有升高的迹象,可以先不特别关注,接下来分析最耗费CPU的Java线程,步骤如下:,利用top命令获取相应的pid,-H代表thread模式,也可以配合grep命令更精确定位。,然后转换成16进制。,最后利用jstack获取的线程栈,对比相应的ID即可。也可以用vmstat,查看上下文切换的数量,比如指定时间间隔为1,收集20次,如果上下文切换非常高,并且系统中高很多,就表明可能存在不合理的线程调度导致的,可以用pidstat进一步分析定位。,除了CPU,内存和IO也有很多注意事项:

© 版权声明

相关文章