Netdata警报:1m ipv4 udp receive buffer errors | 23650 errors
我有一个由三台服务器组成的集群,它们都是接收netflow / sflow / ipfix数据的ELK(Elasticsearch Logstash Kibana)集群的一部分。每个服务器都有nginx负载,可在三个服务器之间平衡大量UDP数据。
示例: 路由器会将netflow发送到UDP端口9995上的任何一台服务器,并将其(与nginx流一起)分配给udp / 2055上的所有三台服务器。它可能将该数据包转发到同一台机器,但在端口2055上,或者可能将其发送到端口2055上的另一台机器。Logstash的netflow输入配置为仅在每台机器上侦听UDP端口2055。 sFlow的工作原理相同,但是它使用的是udp / 9995分发到udp / 6343等。
这一切都很好,如果不使用netdata,人们会认为它运行良好,但是我看到了以下问题:
在过去的几天中,我大部分时间都在对此进行研究,但是我没有任何进展。我尝试使用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输入增加工作程序数量(从4到8),队列大小(从2048到4096)和接收缓冲区(从32MB到64MB),但是我没有看到任何差异之一。我已经花了很多时间重新启动logstash,并且事情可以反映新的设置,但是问题仍然存在。
任何有关我可以做什么以找出需要更改的内容以及如何实际确定应设置为什么的想法都将受到赞赏。
感谢您的阅读。