最近有几次,linux centos 7 服务停了后,重启,再起一些应用后,查看top后,rsyslogd cpu占用率高问题, 先说我这块怀疑导致的原因吧。
阿里云ecs的rsyslogd从平时的1%cpu都用不到暴涨到98.87%, 导致业务进程资源紧张,响应很慢;
查看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内存占用过高
限制rsyslog服务
[root@op-node-201 ~]# cat /usr/lib/systemd/system/rsyslog.service
[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
限制journal服务
把Storage改为none
vim /etc/systemd/journald.conf
[Journal]
Storage=none
SystemMaxUse=16M
ForwardToSyslog=no
systemctl restart systemd-journald
Storage选项扩展
通过查看man手册,#man 5 journald.conf 你会发现,Storage=的值可以是volatile,persistent, autoandnone,但是,默认的是auto,
# 第一步:重启rsyslog 服务,发现 进程cpu 占用率依旧高达99%,采取 第二种方案
[root@hadoop2 ~]# systemctl restart rsyslog
# 第二步: 关闭rsyslog服务
[root@hadoop2 ~]# systemctl stop rsyslog
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。