寻找CPU使用率高进程方法

南墨2年前技术文章916

背景

节点报CPU使用率高,需要定位是什么进程占用CPU使用率高。

CPU使用率持续较高

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

1.png

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

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

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

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

   123.jpg

CPU使用率偶现较高

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

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

  1. 在对应节点创建如下shell文件。checkcpu.sh ,其中logFile,是日志打印文件,delayTime 是每次执行的间隔,单位秒。

#!/usr/bin/env bash
logFile=/tmp/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
  1. 后台执行脚本。在节点在后台执行如下shell文件:

chmod 700 /opt/checkcpu.sh

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

  1. 查看日志。查看“/tmp/checkCpuUsage.log”日志中,是否有打印CPU使用量高的进程的详细信息。如果查询出的是java进程,常见因为内存配置过小导致频繁垃圾回收,引起CPU使用率高

  2. 停止检查脚本进程。

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


标签: 运维CPU

相关文章

CPU--使用率

CPU--使用率

一、CPU和任务统计信息查询/proc/stat第一行表示所有CPU的累加其他列表示不同场景下CPU的累加节拍数,单位:USER_HZ即10ms➜  ~ cat ...

CPU--上下文切换

CPU--上下文切换

一、概述1、Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 ...

CPU--平均负载

1、原理概述平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。   * ...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。