一 系统内存过高排查方法
1、使用top命令查看当前服务器上所有进行使用内存情况,可以使用shift+m 按键,将进程按照内存使用情况排序。如若某个进程占用过多内存,使用kill <pid> 终止该进程。
2、检查是否有内存泄漏情况。
ps aux --sort=-%mem
该命令可按照内存使用率高低进行排序,如果某个进程内存占用持续增加,可能存在内存泄漏情况。
3、检查是否有未关闭的程序或进程。
lsof | grep deleted
有些程序在关闭时未完全释放占用的内存,可能会导致内存过高的情况。
4、如果以上排查都没有问题,可以考虑升级系统内核和驱动程序。有时,系统内核和驱动程序版本不兼容可能也会导致内存占用率过高。
二 系统cpu过高排查方法
1、使用top命令,使用shift+p 按键,按照cpu排序,找到cpu使用率过高的进程pid
2、使用top -H -p <pid>,找到进程中消耗资源的线程id
或者使用 ps -mp <pid> -o THREAD,tid,time | sort -rn
3、将线程id转化为16进制(字母要小写,bc为linux的计算器命令)
echo 'obase=16;[线程id]' | bc 或者printf "%x\n" [线程id]
4、查看线程信息状态
jstack [进程id] | grep -A 10 [线程id的16进制]