【Linux】解决rsyslog服务占用内存过高

当发现rsyslogd内存占用异常时,通过journalctl进行状态检查和日志分析,发现日志文件损坏。解决方案包括删除损坏的journal文件和imjournal.state文件,然后在rsyslogd服务配置中添加内存限制,如MemoryAccounting、MemoryMax和MemoryHigh,以限制其内存使用。重启服务后,rsyslogd内存占用得到控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 目录

一、概述

二、排查

三、解决办法


一、概述


使用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=yesMemoryMax=80MMemoryHigh=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-reload
systemctl restart rsyslog

 --------------------------- 谢谢点赞!-------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿龙先生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值