回答套路一般为:线上服务器没有排查过,线上服务器只有运维才有操作权限。在平时开发的时候,在测试服务器上排查过。
一、复现代码
public class Test
{
public static void main( String[] args )
{
int a = 0;
while (a < 100) {
a *= 10;
}
}
}
二、将代码打包成 jar 包,上传到服务并运行
2.1、将代码打包成 jar 包
参考: 点我
2.2、传到服务并运行
运行好的效果如下
三、拿到让 cpu 100% 的进程 id、线程 id
3.1、拿到进程 id
通过 top 命令,就可以看到让 cpu 100% 的进程 id,pid 就是进程id
3.2、拿到让 cpu 100% 的线程 id
使用 top -Hp 进程id
,拿到让 cpu 100% 的线程 id
四、导出对应快照(用来分析问题)
jstack -l 进程id > ./进程id.stack
找到生成的快照,使用 more / less 命令查看快照内容,在快照内容里搜索线程 id 的十六进制,找到问题代码。
五、建议
强烈建议,自己实际操作一遍,加深印象。
六、最后
我是 xiucai,一位后端开发工程师。文章来源:https://www.toymoban.com/news/detail-672975.html
如果你对我感兴趣,请移步我的个人博客,进一步了解。文章来源地址https://www.toymoban.com/news/detail-672975.html
- 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
- 本文首发于个人博客,未经许可禁止转载💌
到了这里,关于【面试】线上 CPU 100% 问题排查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!