"服务不可用"怎么排查?讲了100遍还是记不住?
程序员的成长之路
共 1670字,需浏览 4分钟
·
2020-12-07 06:02
阅读本文大概需要 2.4 分钟。
来自:https://urlify.cn/Q3Ar6z
1、排查思路
系统本身代码问题 内部下游系统的问题导致的雪崩效应 上游系统调用量突增 http请求第三方的问题 机器本身的问题
2、开始排查
查看日志,没有发现集中的错误日志,初步排除代码逻辑处理错误。 首先联系了内部下游系统观察了他们的监控,发现一起正常。可以排除下游系统故障对我们的影响。 查看provider接口的调用量,对比7天没有突增,排除业务方调用量的问题。 查看tcp监控,TCP状态正常,可以排除是http请求第三方超时带来的问题。 查看机器监控,6台机器cpu都在上升,每个机器情况一样。排除机器故障问题。即通过上述方法没有直接定位到问题。
3、解决方案
top -Hp 384
4430
4431
4432
4433
线程分别占用了约40%的cpu114e
114f
1150
1151
sudo -u tomcat jstack -l 384>/1.txt
sudo -u tomcat jmap -dump:live,format=b,file=/dump201612271310.dat 384
http://www.eclipse.org/mat/
BouncyCastleProvider
对象持有过多。即我们代码中对该对象的处理方式是错误的,定位到问题。4、代码分析
5、代码改进
6、本文总结
查看日志 查看CPU情况 查看TCP情况 查看java线程,jstack 查看java堆,jmap 通过MAT分析堆文件,寻找无法被回收的对象
推荐阅读:
微信扫描二维码,关注我的公众号
朕已阅
评论