![日志转发性能和操作系统瓶颈](https://linux22.com/image/572728/%E6%97%A5%E5%BF%97%E8%BD%AC%E5%8F%91%E6%80%A7%E8%83%BD%E5%92%8C%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%93%B6%E9%A2%88.png)
系统日志服务器通常每秒可以处理多少日志?我所说的系统日志服务器是指 rsyslog、syslog-ng、splunk 等。这个问题的目的是找出操作系统(Linux 内核 >=3.0)在每秒处理多少日志时会成为瓶颈。
到目前为止,我能够使用 UDP 每秒转发大约 10,000 条日志。如果我增加速率,日志就会开始丢失。我不知道是什么导致了丢失,是应用程序(它是自定义构建的日志服务器)还是操作系统?
您能否分享一下您每秒可以传输多少日志而不会出现任何丢失的经验?
答案1
您可以增加内核 UDP 缓冲区,但这并不能解决问题。如果您想可靠地转发这么多的消息,您应该忘记 UDP 系统日志,而改用 TCP。我们测量了每秒超过 500k 个事件,日志通过 TCP 传输系统日志消息时。
答案2
这个问题不能简单地用目前的形式来回答。日志传输速率的上限没有一般规则。这可以根据多种因素而变化,例如您的网络配置/可靠性(发送方和接收方之间)、机器规格以及它们是否已加载等...
UDP 不是可靠的协议。您可以尝试使用 TCP,因为它是面向连接的协议,可用于可靠的数据传输。它比 UDP 稍微多一点开销,但值得一试。