在 CentOS(以及大多数 Linux 发行版)上,/var/log/messages(或 systemd 下的 journal + rsyslog)写入慢通常不是单点原因,而是多个环节叠加。下面按常见原因 → 排查方法 → 解决建议梳理。
rsyslog 默认使用:
/var/log/messages -> 文件系统 -> 磁盘
如果:
sync() 写就会明显变慢。
检查:
grep messages /etc/rsyslog.conf
常见慢配置:
*.* /var/log/messages
(没有缓冲)
查看日志速率:
wc -l /var/log/messages
tail -f /var/log/messages
CentOS 上常见于:
检查:
iostat -x 1
df -h
df -i
CentOS 7+:
/run/log/journal配置不当会“堵”
检查:
systemctl status systemd-journald
systemctl status rsyslog
如果你配置了:
*.* @logserver:514
但:
rsyslog 会卡住本地写
检查:
ausearch -m AVC
getenforce
# 1. 看磁盘
iostat -x 1
df -h
df -i
# 2. 看日志速率
tail -f /var/log/messages
# 3. 看 rsyslog 状态
systemctl status rsyslog
# 4. 看是否卡网络
rsyslogd -N1
$ModLoad imuxsock
$ModLoad imjournal
# 写文件使用异步
$ActionFileEnableSync off
$ActionQueueType LinkedList
$ActionQueueFileName fwdRule1
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
不要全量写:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
/etc/logrotate.d/syslog
/var/log 单独挂载/etc/systemd/journald.conf
Storage=persistent
RateLimitInterval=30s
RateLimitBurst=1000
CentOS message 写入慢,90% 是 rsyslog 同步写 + 磁盘 IO 差 + 日志量过大 三件事叠加。
如果你愿意,可以贴:
rsyslog.confiostat / df 输出我可以直接帮你精准定位是哪一层慢。