Я недавно установил netdata на имеющемся у меня экземпляре Amazon EC2 debian. Netdata - это довольно круто, красивые диаграммы / графики, безболезненно просты в установке (по сравнению с другими).
Несколько раз в день я получаю такое сообщение, как
1m ipv4 udp receive buffer errors = 9 errors
number of UDP receive buffer errors during the last minute
и через несколько минут сообщение о восстановлении. Вероятно, в течение дня с UDP / TCP выявляются сотни ошибок. Я также вижу похожую картину на сервере, который я запускаю дома.
Я использовал другие пакеты мониторинга на протяжении многих лет и никогда не видел ошибок такого типа. Я подозреваю, что некоторые ошибки, особенно по UDP, являются нормальным явлением, верно? Это ожидаемое поведение? Могу ли я отключить мониторинг этих сигналов тревоги?
Я переехал на вторую сетевую карту на машине дома без существенных изменений в поведении.
это Приемлемое количество ошибок Ethernet в среде среднего размера? предполагает, что у меня может быть серьезная проблема, и я определенно могу попробовать другие сетевые адаптеры дома. Но как я могу решить эту проблему на своем экземпляре EC2?
Также стоит отметить, что logwatch вообще не сообщает о проблемах, но тогда он может не быть настроен для этого.
Спасибо за руководство.
netdata
использует statsd
как система сбора метрик. Это протокол на основе UDP, который невероятно быстр и эффективен, но при высоких скоростях может переполнять recv_buffer входящего узла. Размер буфера приема по умолчанию составляет около 1 МБ, поэтому, если агент statsd не может использовать достаточно быстро, чтобы буфер не заполнялся, ядро отбрасывает датаграммы.
Простое решение - увеличить буфер recv до большего размера, чтобы справиться с пиками - обычно это решает проблемы переполнения буфера UDP. Если вы по-прежнему постоянно видите журнал выше, вам нужно будет увеличить мощность ЦП машины или перейти к более производительной реализации statsd (нам пришлось перейти от стандартного клиента statsd на основе nodejs к клиенту на основе C ++).
Чтобы увеличить размер буфера, используйте следующие команды:
# 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