温馨提示×

linux syslog为何占用高

小樊
49
2026-09-23 00:31:05
栏目: 智能运维

在 Linux 系统中,syslog(或 rsyslog / syslog-ng)占用高通常指以下几种情况之一:

  • CPU 占用高
  • 内存占用高
  • 磁盘 I/O 或磁盘空间占用高

下面按常见原因逐一说明,并给出排查与解决办法。


一、最常见原因:日志量暴增(CPU / 磁盘高)

1. 应用或系统疯狂写日志

例如:

  • 程序死循环打印日志
  • 网络服务被攻击(SSH 暴力破解、扫描)
  • 内核报错(OOM、网卡丢包)

现象

  • /var/log/messages、/var/log/syslog 增长极快
  • rsyslog 进程 CPU 高

排查

# 查看日志增长
ls -lh /var/log/

# 实时查看日志
tail -f /var/log/syslog

# 统计最近日志来源
grep "$(date +%b\ %e)" /var/log/syslog | awk '{print $5}' | sort | uniq -c | sort -nr | head

解决

  • 修复写日志的程序
  • 限制日志级别(如改为 warning)
  • 使用 logrotate 定期切割

二、rsyslog 配置不当(CPU / 内存高)

2. 启用过多模块或远程日志

例如:

  • 开启 imtcp、imudp
  • 配置远程 syslog 服务器但网络不通

现象

  • rsyslog 占 CPU 很高
  • 日志堆积在内存中

排查

systemctl status rsyslog
ps -aux | grep rsyslog

解决

  • 精简 /etc/rsyslog.conf
  • 注释不必要的模块
  • 检查远程 syslog 地址是否可达

三、日志未轮转(磁盘空间高)

3. logrotate 未生效

原因:

  • logrotate 配置错误
  • 磁盘只读
  • rsyslog 未收到 HUP 信号

现象

  • 单个日志文件几 GB
  • 磁盘 100%

解决

# 手动执行
logrotate -f /etc/logrotate.conf

# 重载 rsyslog
systemctl reload rsyslog

四、磁盘 I/O 瓶颈(I/O 等待高)

4. 慢磁盘 + 高频日志

  • 机械盘
  • 云服务器 IOPS 限制

解决

  • 将日志写入 tmpfs(谨慎)
  • 降低日志级别
  • 使用异步写入

五、rsyslog 自身 Bug 或版本问题

现象

  • 内存缓慢增长
  • 长时间运行后卡死

解决

rsyslogd -version
  • 升级 rsyslog
  • 重启服务(临时缓解)

六、快速排查清单(建议顺序)

top
df -h
du -sh /var/log/*
journalctl -p err -xb
systemctl status rsyslog

如果你愿意,可以告诉我:

  • 是 CPU / 内存 / 磁盘 哪一种高
  • 使用的是 rsyslog 还是 syslog-ng
  • Linux 发行版(CentOS / Ubuntu 等)

我可以给你更精确的优化方案。

0 踩