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

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