Syslog 日志出现延迟写入,通常不是单一原因,而是由系统配置、负载、网络、缓冲机制等多方面因素共同造成的。下面按常见场景系统梳理原因与排查思路。
Syslog 本身或底层 I/O 存在缓冲,日志不会立即刷盘。
fflush() 或不是行缓冲✅ 表现:
$ActionQueueType LinkedList
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionResumeRetryCount -1
✅ 解决思路:
DirectWriteActionQueueTimeout* 参数✅ 表现:
✅ 排查:
top
iostat -x 1
✅ 常见现象:
✅ 判断方法:
date 与日志时间在 systemd 系统中:
如果:
也会出现延迟。
| 场景 | 可能原因 |
|---|---|
| 本地也延迟 | 缓冲 / 磁盘 / 配置 |
| 仅远程延迟 | 网络 / TCP / UDP |
logger "test-$(date +%T.%N)"
立即查看日志文件时间差。
systemctl status rsyslog
journalctl -u rsyslog
$ActionQueueType Direct
或:
module(load="imuxsock" sysSock.use="off")
input(type="imuxsock" Socket="/dev/log" CreatePath="on")
# 临时
sync
# 或调整内核参数
sysctl -w vm.dirty_ratio=5
sysctl -w vm.dirty_background_ratio=2
Syslog 延迟写入的本质原因通常是:缓冲 + 队列 + I/O 调度 + 网络,而不是日志没产生。
如果你愿意,可以告诉我:
我可以帮你精确分析并给出最小改动方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。