rsyslog占用内存高

现象

rsyslog进程占用内存高,使用top命令查看,占用率为38.8%

排查

1、journalctl -u rsyslog查看状态
在这里插入图片描述
2、tail /var/log/messages查看messages日志
在这里插入图片描述
3、执行journalctl --verify命令检查发现系统日志卷文件损坏错误:
在这里插入图片描述

解决办法

1、删除上面损坏的journal文件
2、删除 /var/lib/rsyslog/imjournal.state文件
3、重启rsyslog。systemctl restart rsyslog

问题根因

systemd的一个bug,在journal需要压缩的时候就会发生这个问题,后果实在是很严重,还好已经修复了。有两种方法,我这边在两台经常发生这个问题的服务器上都实验了,跑了2天多都没有再发生,应该是确认可以解决的:

避免方法

修改配置/etc/rsyslog.conf,增加如下两行,然后重启systemctl restart rsyslog

$imjournalRatelimitInterval 0
$imjournalRatelimitBurst 0

1、关掉journal压缩配置

vi /etc/systemd/journald.conf,把#Compress=yes改成Compress=no,之后systemctl restart systemd-journald即可

2、升级systemd版本

我升级到systemd-219-42.el7_4.4.x86_64,之后systemctl restart systemd-journald,也应该可以解决

参考链接

https://xbuba.com/questions/56986536
http://blog.zhouzg.com.cn/archives/712
http://aspirer.wang/?p=881
https://github.com/systemd/systemd/pull/1662
https://github.com/systemd/systemd/pull/1663
https://github.com/coreos/bugs/issues/322

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章