前言:线上服务器在访问量大,或者其他特殊情况下,可能会出现CPU占用高,或者服务直接不停FULL GC导致服务器卡顿甚至挂掉的情况,针对不同情况,根本原因也各有差异,前段时间我们公司服务器就出现了大量redis链接超时,乍一看可能是网络抖动或者redis配置问题,但是深究之下发现其实是服务cpu负载特别高导致的,今天就总结一下各种服务器问题解决思路
CPU占用率高
针对CPU占用太高的问题,我们可以先用top命令看下是哪个进程导致的,找到对应pid后,可以接着用 top -H -p pid 查询到cpu使用率比较高的线程
找到对应占用cpu较高的线程pid后,将占用最高的pid转换为16进制
printf '%x\n' pid
得到nid,接着在jstack查找对应堆栈信息就可以看到对应线程在搞什么
jstack pid |grep 'nid'
注:此时jstack命令如果报错
16206: Unable to open socket file: