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 即可。

posted on 2017-10-19 13:50  石下江的太阳光  阅读(363)  评论(0编辑  收藏  举报

导航