rsyslogd、systemd-journald内存占用高解决方案

解决方法(限制服务内存使用率)

1、修改rsyslogd服务配置文件

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

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

2、重启服务

根本原因

查看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改为none,如下

2、重启生效

3、Storage选项扩展

通过查看man手册,#man 5 journald.conf 你会发现,Storage=的值可以是volatile,persistent, autoandnone,但是,默认的是auto,

  • volatile代表日志只存在内存中,即/run/log/journal/
  • persistent代表日志只存在磁盘中,即/var/log/journal/
  • auto代表日志存在磁盘中,或者内存中,这个取决于你是否创建/var/log/journal/目录!!这个也算是一个坑吧,看来大家都需要手动mkdir -p /var/log/journal/,systemctl restart systemd-journald来解放自己的内存了!!!
  • none,表示,日志不保留,全部drop,只有当你决定不使用systemd-journald的时候,你可以使用!
此条目发表在linux分类目录。将固定链接加入收藏夹。