Linux 常见问题解决思路
- CPU 高
- 系统平均负载高(load average)
CPU 高
1,步骤:查找进程-》查找线程-》分析threadDump日志-》找出问题代码
a、查看 cpu 高的 java 进程
top
b、生成进程下所有线程的栈日志
jstack 1721 > 1712.txt
c、查看进程下哪些线程占用了高的 cpu
top -p 1712 -H
d、将十进制 pid 转换为十六进制的 pid
printf “%x” 8247
2037
e、在 1712.txt 文件中定位问题
执行 jmap,jstack 等命令时可能会出现 Unable to open socket file: target process not responding or HotSpot VM not loaded 问题
其实大部分情况是用户错误,切换到进程所在用户执行命令即可
su yarn
系统平均负载高(load average)
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。一般来说单核 CPU 的 load 不应该大于1,同理,多核的 load 不应该大于核数
我们常见的负载高一般有这几种情况引起,一个是 cpu 密集型,使用大量 cpu 会导致平均负载升高。另外一个就是 io 密集型等待 I/O 会导致平均负载升高,但是 CPU 使用率不一定很高
还有就是大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高