
Eu instalei recentementedados de redeem uma instância debian do Amazon EC2 que possuo. Netdata é muito legal, bons gráficos, fáceis de instalar (em comparação com outros).
Várias vezes por dia recebo uma mensagem como
1m ipv4 udp receive buffer errors = 9 errors
number of UDP receive buffer errors during the last minute
e alguns minutos depois, uma mensagem de recuperação. Provavelmente existem centenas de erros indicados com UDP/TCP ao longo do dia. Também vejo um padrão semelhante em um servidor que estou executando em casa.
Usei outros pacotes de monitoramento ao longo dos anos e nunca vi erros desse tipo. Suspeito que algum nível de erro, especialmente no UDP, seja normal, certo? Esse é o comportamento esperado? Posso desligar o monitoramento desses alarmes?
Mudei para uma segunda NIC na máquina em casa, sem nenhuma mudança essencial no comportamento.
EsseNúmero aceitável de erros de Ethernet em um ambiente de médio porte?sugere que posso ter um problema sério e certamente posso tentar outras NICs em casa. Mas como eu resolveria isso na minha instância EC2?
Também pode ser importante notar que o logwatch não relata nenhum problema, mas pode não estar configurado para isso.
Obrigado pela orientação.
Responder1
netdata
usa statsd
como sistema de coleta de métricas. Este é um protocolo baseado em UDP que é incrivelmente rápido e eficiente, mas em taxas altas pode estourar o recv_buffer do nó de ingresso. O buffer de recebimento padrão é em torno de 1M - portanto, se o agente statsd não for capaz de consumir rápido o suficiente para evitar que o buffer seja preenchido, o kernel descartará os datagramas.
A solução simples é aumentar seu buffer recv para um tamanho maior para lidar com picos - isso geralmente resolve problemas de saturação de buffer UDP. Se você ainda vir o log acima de forma consistente, precisará aumentar a capacidade da CPU da máquina ou mudar para uma implementação de statsd com melhor desempenho (tivemos que mudar do cliente statsd padrão baseado em nodejs para um cliente baseado em C++).
Para aumentar o tamanho do buffer, use os seguintes comandos:
# echo "net.core.rmem_default=8388608" >> /etc/sysctl.conf
# echo "net.core.rmem_max=16777216" >> /etc/sysctl.conf
# sysctl -p
Os parâmetros acima são muito agressivos e aumentarão o uso de memória da pilha do kernel. Você pode querer começar com valores menores e aumentar a partir daí – a proporção tradicional é max = default * 2
.
Mais informações estão disponíveis aqui:https://www.ibm.com/support/knowledgecenter/en/SSQPD3_2.6.0/com.ibm.wllm.doc/UDPSocketBuffers.html