一、概述
使用top命令查看内存占用时,发现rsyslogd内存占用很高。

二、排查
1、journalctl -u rsyslog查看状态

2、tail /var/log/messages查看messages日志

执行journalctl --verify命令检查发现系统日志卷文件损坏错误

三、解决办法
1、删除上面损坏的journal文件
2、删除 /var/lib/rsyslog/imjournal.state文件
3、修改rsyslogd服务配置文件后重启rsyslog
vim /usr/lib/systemd/system/rsyslog.service
在service配置中添加memoryaccounting=yes,memorymax=80m,memoryhigh=8m 三项来限制服务内存使用率,如下所示:
[unit] description=system logging service ;requires=syslog.socket wants=network.target network-online.target after=network.target network-online.target documentation=man:rsyslogd(8) documentation=http://www.rsyslog.com/doc/ [service] type=notify environmentfile=-/etc/sysconfig/rsyslog execstart=/usr/sbin/rsyslogd -n $syslogd_options restart=on-failure umask=0066 standardoutput=null restart=on-failure memoryaccounting=yes memorymax=80m memoryhigh=8m [install] wantedby=multi-user.target ;alias=syslog.service
通常情况下rsyslogd大小只有5m,所以将内存上限设置为8m,然后将绝对内存限制为80m。
重启服务
systemctl daemon-reloadsystemctl restart rsyslog
到此这篇关于linux解决rsyslog服务占用内存过高的办法的文章就介绍到这了,更多相关linux rsyslog占用内存过高内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论