linux服务器负载问题排查

本文介绍如何使用top命令查看CPU和内存使用情况,通过jstack命令定位高CPU线程,包括线程ID的十六进制转换及分析线程阻塞的方法。适用于程序正常运行或无响应状态下的故障排查。

  首先查看进程中cpu的使用率和内存使用情况,命令:top

top -H -p <pid> :查看进程的线程使用情况

使用命令printf "%x\n" 69888把线程pid转换成16进制数,得到:110a5。

使用jstack 69892 | grep -20 11104 命令查询该线程阻塞的地方。
使用jstack [-l] pid > xxx.log将所有线程信息输入到指定文件中

1)如果程序正常运行:使用jstack [-l] pid > xxx.log将所有线程信息输入到指定文件中 
这里写图片描述

2)如果程序无响应:使用 jstack -F [-m] [-l] pid >xxx.log强制打印栈信息 
这里写图片描述

 

jstack解决CPU过高的问题

第一步,找到占用cpu最高的一个线程
方法一:top -p [pid]
方法二:ps -mo spid,lwp,stime,time,%cpu -p [pid]
方法三:直接top,然后shift+h
第二步,将其转化成16进制。假使我们得到的线程号为n,接下来将它转成16进制,记为spid
方法一:echo "obase=64;n"|bc
方法二:printf 0x%x n
下一步,执行jstack -l pid| grep spid -A 100 打印后面100行分析问题



转载于:https://www.cnblogs.com/kkz-org/p/9982195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值