Linux 寻找CPU使用率高进程
一、CPU使用率持续较高
1.在对应节点使用 “top”命令,然后键盘输入“P”,即按照CPU使用率排序进程。
2.执行ps -ef | grep <CPU使用率高的PID>。
确认该进程的详细信息,确认该进程的日志。查看该组件日志,占用CPU高是否正常。
3.使用如下命令,可以打印出CPU占用率最高的十个进程的信息。
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
二、CPU使用率偶现较高
1. 使用如下命令,可以打印出CPU占用率最高的十个进程的信息。
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
2. 在对应节点创建如下shell文件。
checkcpu.sh ,其中logFile,是日志打印文件,delayTime 是每次执行的间隔,单位秒。
#!/usr/bin/env bash
logFile=/var/log/checkCpuUsage.log
delayTime=30 # seconds between each excute, default value is 30 seconds
while( true )
do
echo `date` >> $logFile
echo "USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND " >> $logFile
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head >> $logFile
sleep $delayTime
echo " " >> $logFile
done
3. 后台执行脚本。
在节点在后台执行如下shell文件:
chmd 700 /opt/checkcpu.sh
nohup /opt/checkcpu.sh > /dev/null 2>/dev/null &
4. 查看日志。
查看“/var/log/checkCpuUsage.log”日志中,是否有打印CPU使用量高的进程的详细信息。
如果查询出的是java进程,常见因为内存配置过小导致频繁垃圾回收,引起CPU使用率高
5.停止检查脚本进程。
在节点执行ps -ef | grep checkcpu.sh | grep -v grep,找到该进程的pid,kill 即可。