温馨提示×

debian syslog为何占用高

小樊
40
2026-09-05 18:28:18
栏目: 智能运维

在 Debian 系统中,syslog(通常是 rsyslog / syslog-ng)占用高一般不是 syslog 本身“吃 CPU”,而是它在大量写日志或处理异常日志。下面按常见原因和排查方法说明。


一、最常见原因

1. 应用/服务产生海量日志

某些程序(如 cron、docker、nginx、sshd、php、java)不断报错或打 debug 日志。

表现:

  • /var/log/syslog/var/log/messages 增长极快
  • du -sh /var/log/* 很大

排查:

ls -lhS /var/log/
tail -f /var/log/syslog

2. 日志循环(logrotate)失效

日志没被轮转,syslog 一直写大文件。

检查:

systemctl status logrotate
cat /etc/logrotate.d/rsyslog

3. 磁盘 I/O 瓶颈(syslog 在等磁盘)

syslog 高占用其实是 IO wait

查看:

top
# 看 wa 列
iostat -x 1

常见于:

  • 机械硬盘
  • 云服务器 IO 限速
  • /var/log 在慢磁盘

4. rsyslog 配置错误或死循环

例如:

  • 日志又写回 syslog
  • 转发配置错误导致重试

检查:

rsyslogd -N1

5. 系统被攻击 / 扫描

如:

  • SSH 暴力破解
  • 端口扫描

日志示例:

Failed password for root from x.x.x.x

查看:

grep "Failed password" /var/log/auth.log | wc -l

二、快速定位方法

1. 看 syslog 进程

ps aux | grep rsyslog
top -p $(pgrep rsyslogd)

2. 实时看日志来源

tail -f /var/log/syslog

3. 统计高频日志

journalctl -u rsyslog --since "10 min ago" | awk '{print $5}' | sort | uniq -c | sort -nr | head

三、常见解决方案

✅ 降低日志级别

编辑:

/etc/rsyslog.conf

例如:

*.info;mail.none;authpriv.none;cron.none /var/log/messages

✅ 限制某些服务日志

:programname, isequal, "docker" stop

✅ 启用限速(rsyslog)

$SystemLogRateLimitInterval 5
$SystemLogRateLimitBurst 100

✅ 修复 logrotate

logrotate -d /etc/logrotate.conf
logrotate -f /etc/logrotate.conf

四、如果你能补充信息,我可以更精确判断

请告诉我:

  1. top 里 syslog 是 CPU 高还是 IO 高
  2. /var/log/syslog 增长多快
  3. 是否有 Docker / Nginx / SSH 大量日志
  4. Debian 版本(cat /etc/debian_version

我可以直接帮你给出针对性配置

0