温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

修复消耗CPU 100% 的logrotate进程

发布时间:2020-06-07 21:07:16 来源:网络 阅读:824 作者:kennyluo 栏目:建站服务器

上周,我注意到一台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 // 一切正常

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI