Debian 上 syslog(通常是 rsyslog / syslog-ng)启动慢,常见原因可以分成几类。下面按实际运维中最常遇到的情况说明,并给出排查方法。
如果 syslog 配置中:
系统启动时会 阻塞等待网络或 DNS。
✅ 表现:
rsyslog.servicesystemd-analyze blame 中时间很长✅ 解决:
# /etc/rsyslog.conf 或子配置
$OmitLocalLogging on
$ActionResumeRetryCount -1
$ActionQueueType LinkedList
或:
# 不解析主机名
$PreserveFQDN off
如果是远程日志:
*.* @@logserver:514
改为:
*.* @@logserver:514;RSYSLOG_SyslogProtocol23Format
并确保:
systemctl disable systemd-resolved # 或正确配置 DNS
如果:
/var/log 在 NFS / iSCSI / 加密磁盘✅ 检查:
mount | grep var/log
lsblk
✅ 解决:
systemctl edit rsyslog
[Unit]
After=local-fs.target
如果 syslog 启动失败但未退出,systemd 会等很久。
✅ 检查:
systemctl status rsyslog
journalctl -u rsyslog
✅ 修改超时:
systemctl edit rsyslog
[Service]
TimeoutStartSec=10
例如:
✅ 精简:
grep -R "Module" /etc/rsyslog.conf /etc/rsyslog.d/
/var/log 满✅ 检查:
df -h
df -i
systemctl cat rsyslog
如果有:
Requires=network.target
After=network.target
可改为:
After=network-online.target
Wants=network-online.target
# 看启动耗时
systemd-analyze blame | grep rsyslog
# 看详细日志
journalctl -b -u rsyslog
# 看是否卡在网络
systemctl status rsyslog
你可以告诉我:
journalctl -u rsyslog 的输出我可以直接帮你改配置。