寻找CPU使用率高的进程方法

被刻印的时光 ゝ 提交于 2019-12-01 02:11:25

寻找CPU使用率高的进程方法

发布时间:  2017-07-13 浏览次数:  1362 下载次数:  0

 问题描述

节点报CPU使用率高,甚至出现“ALM-12016 CPU使用率超过阈值”告警,需要定位是什么进程占用CPU使用率高。

 处理过程

对于持续cpu过高的处理:

1.在对应节点使用 “top”命令,然后键盘输入“C”,即按照CPU使用率排序进程。

 

2.执行  ps -ef | grep  <CPU使用率高的PID>

确认该进程的详细信息,确认该进程的日志。查看该组件日志,占用CPU高是否正常。

对于偶发性的cpu过高的处理:

1.在操作系统日志“/var/log/osinfo/statistics/ps.txt”会记录每2分钟执行一次ps命令的结果。

   但是该信息只记录了进程的基本信息

 

2.使用如下命令,可以打印出CPU占用率最高的十个进程的信息

 

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

 

3.在对应节点创建如下shell文件checkcpu.sh

 

#!/usr/bin/env bash

logFile=/var/log/Bigdata/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

4.后台执行脚本

在节点在后台执行如下shell文件

chmd 700 /opt/checkcpu.sh

nohup /opt/checkcpu.sh  > /dev/null  2>/dev/null  &

5. 查看日志

查看/var/log/Bigdata/checkCpuUsage.log 日志中,是否有打印CPU使用量高的进程的详细信息。

6. 停止进程

 

在节点执行“ps -ef | grep checkcpu.sh | grep -v grep” 找到该进程的pid,kill 即可。

 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!