码迷,mamicode.com
首页 > 系统相关 > 详细

修复消耗CPU 100% 的logrotate进程

时间:2019-12-27 22:08:55      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:停止   usr   lib   etc   conf   占用   local   没有   服务器   

上周,我注意到一台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进程

标签:停止   usr   lib   etc   conf   占用   local   没有   服务器   

原文地址:https://blog.51cto.com/uppower/2462435

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!