线上CPU占用100% 问题 快速定位
1.top查看 CPU占用最高的java进程
2.jstack pid >> java.txt 导出CPU占用高进程的线程栈。
- 如果报错
Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
解决方法:用 printf "%x" pID 转16 进制 就可以了,printf "%x" 26250 结果是:668a
jstack 0x668a >> java.txt
执行后继续报错,原因是本次排查的是es的故障,又因为es的进程只能用es创建的专门的用户才能启动... 所以用root账号执行Jstack去观察es的进程是不行的,如果你的场景不是这种,可以无视
java.rmi.UnknownHostException: Unknown host: 0x1899; nested exception is
这个报错的原因和上面一样,为什么报这个错,因为直接运行不了jstack,我采用了arthas 也是因为这个原因用不了
target process not responding or HotSpot VM not loaded
[参考](https://blog.csdn.net/u013467442/article/details/88957485)
3.top -H -p PID 查看对应进程的哪个线程占用CPU过高。
4.echo “obase=16; PID” | bc 将线程的PID转换为16进制,大写转换为小写。(不行用电脑的计算器转换也可以)
5.在第二步导出的Java.txt中查找转换成为16进制的线程PID。找到对应的线程栈。
6.分析负载高的线程栈都是什么业务操作。优化程序并处理问题。
Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。