前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux rsyslogd cpu占用资源过高

linux rsyslogd cpu占用资源过高

原创
作者头像
iginkgo18
修改2021-10-11 10:28:28
5.1K0
修改2021-10-11 10:28:28
举报
文章被收录于专栏:devops_k8s

1 简介

最近有几次,linux centos 7 服务停了后,重启,再起一些应用后,查看top后,rsyslogd cpu占用率高问题, 先说我这块怀疑导致的原因吧。

2 现象

阿里云ecs的rsyslogd从平时的1%cpu都用不到暴涨到98.87%, 导致业务进程资源紧张,响应很慢;

3 根本原因

查看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内存占用过高

4 解决

4.1 限制服务内存

限制rsyslog服务

代码语言:javascript
复制
[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;

重启服务

代码语言:javascript
复制
systemctl daemon-reload
systemctl restart rsyslog

限制journal服务

把Storage改为none

代码语言:javascript
复制
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,

  • 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的时候,你可以使用!

4.2 停掉服务

代码语言:javascript
复制
# 第一步:重启rsyslog 服务,发现 进程cpu 占用率依旧高达99%,采取 第二种方案
[root@hadoop2 ~]# systemctl restart rsyslog
# 第二步: 关闭rsyslog服务
[root@hadoop2 ~]# systemctl stop rsyslog

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 简介
  • 2 现象
  • 3 根本原因
  • 4 解决
    • 4.1 限制服务内存
      • 4.2 停掉服务
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档