Linux下cpu过高问题排查
发布日期:2021-08-25 00:32:44 浏览次数:5 分类:技术文章

本文共 761 字,大约阅读时间需要 2 分钟。

原文地址:https://blog.csdn.net/chenjunan888/article/details/80447800

在服务器报cpu过高时,可使用以下命令,快速导出堆栈信息,以方便查看具体的问题。

 

 

1. 使用top命令定位异常进程。可以看见12836的CPU和内存占用率都非常高

此时可以再执行ps -ef | grep java,查看所有的java进程,在结果中找到进程号为12836的进程,即可查看是哪个应用占用的该进程。

2. 使用top -H -p 进程号查看异常线程

3. 使用printf "%x\n" 线程号将异常线程号转化为16进制

4. 使用jstack 进程号|grep 16进制异常线程号 -A90来定位异常代码的位置(最后的-A90是日志行数,也可以输出为文本文件或使用其他数字)。可以看到异常代码的位置。

注意事项:

如果提示 -bash: jstack: command not found,则可以找到jdk的目录,进入bin目录,

        在执行 ./jstack 进程号 | grep 16进制异常线程号 -A90 即可。

   

如果提示 well-known file is not secure,则是因为账号权限的问题。在/tmp/hsperfdata_$USER/目录,有一个以进程号命名的文件,当我们执行jmap或者jstack出现上叙信息时,先检查执行该命令的用户是否和hsperfdata_$USER这个文件所属的用户一致,如果不一致,切换至成一致再执行。执行:sudo -u 有权限的账号 ./jstack 进程号 | grep 16进制异常线程号 -A50 即可。

转载于:https://www.cnblogs.com/givemelove/p/10730782.html

转载地址:https://blog.csdn.net/weixin_33836223/article/details/94481604 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:《Java从入门到精通》第七章学习笔记
下一篇:Intent中常量的意义

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月21日 16时30分52秒