服务CPU暴增排查处理

一:
jps -l可以查到服务的进程号在这里插入图片描述
top -c ,显示进程运行信息列表。然后键入P (大写p),进程按照CPU使用率排序
在这里插入图片描述
二:
top -H -p $pid,可以看到进程中具体是哪个线程占用了CPU,记下该线程的id
在这里插入图片描述
三:
使用 jstack pid > /tmp/log.txt 命令查看线程堆栈信息
在这里插入图片描述
四:
根据线程id 查询在日志文件中,查看堆栈信息
(由于堆栈日志 线程id是16进制的,所以需要先将10进制的线程id转为16进制)

printf “%x\n” 线程PID,可得到对应数字的十六进制
在这里插入图片描述
根据关键词:nid=0x48a7 搜索日志
在这里插入图片描述
jmap打印详细heap信息。

现场处理

服务现场已知CPU占用暴增的服务为哪个。针对具体服务进行处理。
jstack 32856 > /cloud//stack.txt 打印堆栈信息到指定文件中。
在这里插入图片描述
在这里插入图片描述

查看具体heap信息
jmap -dump:live,format=b,file=/cloud/Programs/log/jamp.hprof 32856
使用java的jdk下的jvisualvm.exe查看hprof 文件后发现String,long,Map数据占用内存很高。
在这里插入图片描述
如果报连接soket失败,可能是进程用户不一致问题。使用 su 账户名 切换到对应账号执行命令。

经排查代码后发现此是一个用来记录每条数据处理时间的Map<String,long>的数据。只做了数据打印,无其他特别使用。去掉后,程序正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值