在 Debian 系统中,syslog(通常是 rsyslog / syslog-ng)占用高一般不是 syslog 本身“吃 CPU”,而是它在大量写日志或处理异常日志。下面按常见原因和排查方法说明。
某些程序(如 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
日志没被轮转,syslog 一直写大文件。
检查:
systemctl status logrotate
cat /etc/logrotate.d/rsyslog
syslog 高占用其实是 IO wait。
查看:
top
# 看 wa 列
iostat -x 1
常见于:
例如:
检查:
rsyslogd -N1
如:
日志示例:
Failed password for root from x.x.x.x
查看:
grep "Failed password" /var/log/auth.log | wc -l
ps aux | grep rsyslog
top -p $(pgrep rsyslogd)
tail -f /var/log/syslog
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
$SystemLogRateLimitInterval 5
$SystemLogRateLimitBurst 100
logrotate -d /etc/logrotate.conf
logrotate -f /etc/logrotate.conf
请告诉我:
top 里 syslog 是 CPU 高还是 IO 高/var/log/syslog 增长多快cat /etc/debian_version)我可以直接帮你给出针对性配置。