修复消耗CPU 100% 的logrotate进程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修复消耗CPU 100% 的logrotate进程相关的知识,希望对你有一定的参考价值。

上周,我注意到一台NLP服务器花费大量时间来完成分析请求,其中一个CPU核心长期占用率达到100%。对比刚上线的时候,各个服务的响应速度明显要慢得多。

因此,使用了系统的top和第三方的htop分别做了筛查,最终定位到logrotate系统的日志分割服务出的问题。

以下记录一下具体的处理办法:

首先,执行下面的命令:

$ top

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6479 root 20 0 413m 409m 860 R 99 40.9 927:36.64
/usr/sbin/logrotate /etc/logrotate.conf

$ tail /var/lib/logrotate/logrotate.status

//通过该状态文件得知,里面存在大量tomcat的日志处理任务,由tomcat并没有配置 自定义的日志 处理逻辑,由系统托管日志,且,tomcat的业务处理里非常大,因此,使用 logrotate需要处理的任务过多,造成CPU和磁盘非常忙。

$ ls /var/lib/logrotate/logrotate.status -lh

-rw-r--r-- 1 root root 66M Aug 24 08:18 /var/lib/logrotate/status

以上命令得到整个状态文件居然高达156M,可怕!!

然后,来处理掉这个问题吧!

1) $ ps aux|grep logrotate // 找出 logr的进程号
2) $ kill -9 进程号 // 停止logr
3) $ /usr/local/tomcat/bin/shutdown.sh // 停止tomcat
4) $ rm -rf /usr/local/tomcat/logs // 清理tomcat下的日志文件[pid也可能被放置在这里,所以,我们先停止tomcat]
5) $ rm -f /var/lib/logrotate/logrotate.status //删除logr的状态日志文件太大的日志文件也会导致其使用100%CPU
6) $ logrotate -f /etc/logrotate.conf //重建立 状态日志文件logrotate.status
7)重新启动tomcat // 一切正常

以上是关于修复消耗CPU 100% 的logrotate进程的主要内容,如果未能解决你的问题,请参考以下文章

如何修复电源powerd100+%CPU使用率 - macOS

如何修复电源powerd100+%CPU使用率 - macOS

如何修复电源powerd100+%CPU使用率 - macOS

modrails - 流氓 ruby​​ 进程消耗 100% cpu

如何诊断和解决CPU高度消耗(100%)的数据库

SQL占用了CPU将近100%的资源