Estou tentando configurar um cliente Heartbeat em uma máquina linux (versão 7.3.1611 do CentOS Linux) que está enviando solicitações de eco ICMP para aproximadamente 1300 hosts. No entanto, no futuro, esse número será maior. As mensagens geradas pelo heartbeat estão sendo enviadas para uma instância do logstash em outro servidor.
Esses pedidos saem a cada 3 minutos, todos de uma vez. Após a primeira rodada de solicitações, um grande número dessas mensagens contém um erro:
"write ip4 0.0.0.0->x.x.x.x: sendto: no buffer space available"
Eu tentei várias maneiras de atenuar esse problema, incluindo o escalonamento das solicitações, para que haja menos envios em um segundo. Isso causou problemas com a sincronização de dados no final deste pipeline (além de não resolver completamente o problema), portanto, não é uma opção viável para mim.
A pesquisa on-line levou-me a aumentar a memória alocada para conexões TCP / IP pelo sistema, no entanto, essas são solicitações de ICMP que, até onde eu sei, devem ser separadas.
Eu também não consigo devolver a interface de rede porque a máquina é remota e não tenho como voltar para trazê-la de volta.
Eu também testei aumentando (e configurando para 0) a variável icmp_ratelimit em / proc / sys / net / ipv4, mas isso também não ajudou.
Minha pergunta é bem geral. O que poderia estar causando esse problema? Existe algum tipo de variável que eu preciso ajustar no sistema que permitirá que essas solicitações sejam enviadas de uma só vez? Eu não posso realmente deduzir qual buffer a mensagem de erro está referenciando.
Qualquer ajuda seria muito apreciada ...
P.S. se mais esclarecimentos forem necessários, eu ficaria feliz em fornecê-lo.
EDITAR
Ainda não tem certeza se existe uma falha em outro lugar, mas aumentar o tamanho do buffer de soquete determinado pelas variáveis wmem_max, wmem_default, rem_max, rem_default em /proc/sys/net/core
corrigiu o problema. É provável que o tamanho total dos dados para todas as solicitações de eco ICMP fosse grande demais para caber no máximo anterior de 208kb e, portanto, um grande número deles seria eliminado. Realmente não explica por que o número de pedidos perdidos variaria cada vez, talvez haja um problema subjacente ...
Agora, meu único problema é que cada vez que eu reinicializo o sistema, essas variáveis são redefinidas para 208kb cada. Como faço para que essas mudanças sejam persistentes?
Tags networking linux heartbeat icmp