博客 实战指南:排查服务器CPU过高问题,揪出幕后进程

实战指南:排查服务器CPU过高问题,揪出幕后进程

   数栈君   发表于 2024-01-31 10:32  81  0

背景

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

CPU使用率持续较高

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

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/9b6bfc2f005931f5a2addff885b33ea7..png

  1. 执行ps -ef | grep 使用率高的pid>

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

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

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

   http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e7afd094ad44b1a7caab6718a189e24e..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
whiletrue )
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 即可。



《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack  
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群