我最近在我拥有的Amazon实例上安装了网数据。Netdata非常酷,很好的图表/图表,安装起来非常容易(与其他人相比)。
每天我都会收到一些信息,比如
1m ipv4 udp receive buffer errors = 9 errors
number of UDP receive buffer errors during the last minute几分钟后,一条恢复信息。在这一天,UDP/TCP可能会显示出数百个错误。我还在家中运行的服务器上看到了类似的模式。
多年来,我使用了其他监视包,从未见过此类错误。我怀疑某些级别的错误,特别是在UDP上,是正常的,对吗?这是预期的行为吗?我能关掉这些警报的监控吗?
我已经在家里搬到了机器上的第二个NIC,在行为上没有必要的改变。
这个中等规模环境中可接受的以太网错误数?表明我可能有一个严重的问题,我当然可以在家里尝试其他的网卡。但是,我会在我的EC2实例上解决这个问题吗?
还值得注意的是,logwatch报告根本没有问题,但可能不会为此进行配置。
谢谢你的指导。
发布于 2018-02-28 20:25:45
netdata使用statsd作为度量收集系统。这是一种基于UDP的协议,它速度快、效率高,但以较高的速率可以溢出入口节点的recv_buffer。默认的接收缓冲区约为1M -因此,如果statsd代理无法快速使用以防止缓冲区被填满,内核将丢弃数据报。
简单的解决方案是将recv缓冲区增加到更大的大小以处理峰值--这通常解决了UDP缓冲区溢出的问题。如果您仍然始终如一地看到上面的日志,那么您将需要增加机器的CPU容量,或者移动到一个性能更好的statsd实现(我们必须从标准的基于nodejs的statsd客户机转移到一个基于C++的statsd客户机)。
若要增加缓冲区大小,请使用以下命令:
# echo "net.core.rmem_default=8388608" >> /etc/sysctl.conf
# echo "net.core.rmem_max=16777216" >> /etc/sysctl.conf
# sysctl -p上述参数非常激进,将增加内核堆栈的内存使用量。您可能希望从较小的值开始,然后从那里增加--传统的比率是max = default * 2。
更多信息可在这里获得:https://www.ibm.com/support/knowledgecenter/en/SSQPD3_2.6.0/com.ibm.wllm.doc/UDPSocketBuffers.html
https://serverfault.com/questions/899364
复制相似问题