Netdata警报: 1m ipv4 udp receive buffer errors | 23650 errors
我有三台服务器组成的集群,它们都是 ELK(Elasticsearch Logstash Kibana)集群的一部分,用于接收 netflow/sflow/ipfix 数据。每台服务器都有 nginx 在三台服务器之间平衡大量 UDP 数据。
例子: 路由器将向 UDP 端口 9995 上的任意一台服务器发送 netflow,并将其(使用 nginx 流)分发到 udp/2055 上的所有三台服务器。它可能会将该数据包转发到同一台机器,但端口为 2055,也可能将其发送到端口 2055 上的另一台机器。Logstash 的 netflow 输入配置为仅在每台机器上侦听 UDP 端口 2055。sFlow 的工作原理相同,但它使用 udp/9995 分发到 udp/6343 等等。
这一切都很好,无需使用网络数据有人会认为它运行完美,但我看到以下问题:
Netdata截图:https://i.stack.imgur.com/JNuW8.png
过去几天,我花了大量时间研究这个问题,但没有任何进展。我尝试过调整,但sysctl
完全没有效果。相同的图形模式持续不断,RcvBufErrors 和 InErrors 的峰值约为每秒 700 个事件。偶尔,在以受控方式进行更改时,我会看到峰值或下降,但相同的模式始终占主导地位,峰值相同。
我尝试增加的值sysctl
及其当前值是:
net.core.rmem_default = 8388608
net.core.rmem_max = 33554432
net.core.wmem_default = 52428800
net.core.wmem_max = 134217728
net.ipv4.udp_early_demux = 0 (was 1)
net.ipv4.udp_mem = 764304 1019072 1528608
net.ipv4.udp_rmem_min = 18192
net.ipv4.udp_wmem_min = 8192
net.core.netdev_budget = 10000
net.core.netdev_max_backlog = 2000
注意我也遇到了这个10min netdev budget ran outs | 5929 events
问题,但这不是什么大问题。这就是我增加net.core.netdev_budget
并net.core.netdev_max_backlog
在上面描述的原因。
我还尝试增加每个 logstash 输入的 worker 数量(从 4 增加到 8)、队列大小(从 2048 增加到 4096)和接收缓冲区(从 32MB 增加到 64MB),但我也没有看到任何变化。我给了 logstash 足够的时间来重新启动并反映新设置,但问题仍然存在。
如果您能提供任何关于如何做才能找出我需要更改的内容以及如何实际确定应该设置为何值的想法,我将不胜感激。
谢谢阅读。