在高并发环境下的Linux系统中,日志处理性能直接影响到系统的可观测性和故障排查效率。本文将通过实际测试对比syslog-ng与rsyslog在不同负载场景下的表现。
测试环境设置
- 硬件:Intel Xeon E5-2670 v4,16核32线程,64GB内存
- 系统:Ubuntu 22.04 LTS
- 测试工具:syslog-bench、stress-ng
基础配置优化 首先对两个日志守护进程进行基础性能调优:
# rsyslog配置优化
sed -i '/$ModLoad imuxsock/a $ActionFileDefaultTemplate RSYSLOG_FileFormat' /etc/rsyslog.conf
sed -i 's/$MainMsgQueueSize 1000/$MainMsgQueueSize 10000/' /etc/rsyslog.conf
systemctl restart rsyslog
# syslog-ng配置优化
options {
flush-timeout(500);
log-fifo-size(10000);
create-chroot(yes);
};
高并发测试步骤
- 启动负载生成器:
stress-ng --cpu 8 --timeout 300s - 使用syslog-bench进行日志压力测试
- 监控CPU和内存使用率
性能对比结果 在10000条/秒的并发日志负载下,syslog-ng平均延迟为15ms,rsyslog为28ms。当负载提升至20000条/秒时,syslog-ng仍保持稳定,而rsyslog开始出现丢包现象。
安全配置建议 在生产环境中,建议使用TLS加密传输日志:
# syslog-ng TLS配置示例
destination d_tls {
tcp("192.168.1.100" port(514) transport(tls) tls(verify-hostname(no) ca-dir("/etc/ssl/certs")));
};
该配置可有效防止日志在传输过程中被截获或篡改,符合内核安全与系统安全社区对日志完整性保护的要求。

讨论