rsyslogd内存占用很高解决方案

2023-04-24  本文已影响0人  雪消魂

临时解决方法(限制服务内存)

1、修改rsyslogd服务配置文件

vim /usr/lib/systemd/system/rsyslog.service

在Service配置中添加MemoryAccounting=yes,MemoryMax=80M,MemoryHigh=8M三项如下所示。

[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

通常情况下rsyslogd大小只有5M,所以将内存上限设置为8M,然后将绝对内存限制为80M。

2、重启服务

systemctl daemon-reload
systemctl restart rsyslog

结论:但过一段时间,rsyslog进程还是会超过80M限制。

根本原因

查看rsyslog输出的日志/var/log/

路径 描述
/var/log/messages 服务信息日志(记录linux操作系统常见的服务信息和错误信息)
/var/log/secure 系统的登陆日志(记录用户和工作组的变化情况,是系统安全日志,用户的认证登陆情况
/var/log/maillog 邮件日志
/var/log/cron 定时任务
/var/log/boot.log 系统启动日志

发现/var/log/messages有几个G的日志。查看日志内容发现rsyslog把Journal的log都进行的输出和汇总。当容器越多是,log也就会也多,内存占用也就越多。同时也可能导致systemd-journald内存占用过高

1、修改Journal的配置/etc/systemd/journald.conf

把Storage改为persistent,如下:

[Journal]
Storage=persistent
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
RateLimitInterval=45s
#RateLimitBurst=1000
SystemMaxUse=200M
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=200M
#RuntimeKeepFree=
#RuntimeMaxFileSize=
MaxRetentionSec=5day
#MaxFileSec=7day
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K

2、重启生效

systemctl restart systemd-journald

3、Storage选项扩展

Storage=的值可以是volatile,persistent, autoandnone,但是,默认的是auto,还是会往内存中存放。

上一篇 下一篇

猜你喜欢

热点阅读