Nenhum espaço de buffer disponível e ajuste com sysctl

3

Não é realmente um cara da rede então por favor, tenha paciência comigo.

Atualmente, estou hospedando um aplicativo da Web que envia o UDP para todos os endereços IP em sua sub-rede periodicamente. São 2048 IPs. Meu problema é que ele lança No buffer space available depois de algum tempo.

Eu ajustei alguns valores usando sysctl , a saber:

  • net.ipv4.neigh.default.gc_thresh1 = 2048
  • net.ipv4.neigh.default.gc_thresh2 = 4096
  • net.ipv4.neigh.default.gc_thresh3 = 8192

E funcionou, mas reduz consideravelmente o tempo de resposta do servidor. Está escrito em Java e executado em um fit-pc2 (1.1 ghz, 1gb de RAM, cartão SD) Oh o horror.

Considerando os recursos limitados, como otimizar os parâmetros server / kernel para resolver o problema No buffer space available ?

    
por Bro Kevin D. 08.05.2013 / 12:39

1 resposta

2

Não é a configuração de sysctl como tal, o seu servidor está a abrandar, pois tem de verificar continuamente através de uma tabela arp com 2k entradas.

As coisas que valem a pena tentar são:

  • aumentando o "tempo limite do cache de arp" padrão de 60 para 3600s. Isso reduzirá a taxa média de solicitação de ar de 34 req / s para 0,5 req / s.
  • adicionando todos os endereços MAC interessantes estaticamente à tabela arp

No entanto, sua melhor opção é separar seu servidor dos hosts 2k por um roteador.

  • Se você puder alterar o IP do seu servidor, basta colocá-lo em outra sub-rede
  • Se você não puder alterar o IP, poderá dividir uma sub-rede / 30 da sub-rede / 21 e usar um recurso de proxy-arp para colá-los
por 08.05.2013 / 22:07