Linux syslog 延迟的常见根因
$imjournalRatelimitInterval/$imjournalRatelimitBurst 与 journald 的 RateLimitIntervalSec/RateLimitBurst 缓解。*-/var/log/messages)会先缓存、攒批再写入,提升性能但会造成可见延迟。logrotate 轮转期间若处理不当(如旧文件被移动/删除而进程仍持有句柄),可能出现写入延迟或短暂“断流”;权限错误也会导致写入失败或延迟。快速排查与定位
sudo journalctl -xe | grep -i "suppress\|ratelimit",若看到如 “imjournal: X messages lost due to rate-limiting” 或 “Suppressed N messages from …”,说明触发了速率限制。sudo tail -f /var/log/syslog 与 sudo journalctl -f,若 journal 实时而文件滞后,优先考虑文件缓冲或 I/O。df -h /var/log、iostat -x 1 观察可用空间与写入延迟。sudo systemctl status rsyslog、sudo systemctl status systemd-journald;核对 /etc/rsyslog.conf、/etc/rsyslog.d/*.conf 是否存在错误的过滤规则或输出目标。nc -vz <rsyslog-server> 514),必要时改用更可靠的 TCP/TLS 并开启本地队列。实用优化与配置建议
/etc/rsyslog.conf):$ModLoad imjournal
$imjournalRatelimitInterval 30
$imjournalRatelimitBurst 10000
调整后 sudo systemctl restart rsyslog。/etc/systemd/journald.conf):RateLimitIntervalSec=30s
RateLimitBurst=10000
调整后 sudo systemctl restart systemd-journald。*-/var/log/... 的减号缓冲形式;若追求吞吐与写入合并,可保留缓冲但缩短轮转间隔与历史保留。/var/log/syslog 常见为 root:adm 640),必要时修正并重启 rsyslog。action(type="omfwd" target="x.x.x.x" port="514" protocol="tcp" queue.type="LinkedList" queue.size="10000")),避免 UDP 丢包造成的“延迟/空缺”。