Netstat - mostrando (e crescendo) “pacotes apagados da fila de recebimento” e “pacotes recolhidos na fila de recebimento”

7

estamos vendo o seguinte:

[root@primary data]# netstat -s | grep buffer ; sleep 10 ; netstat -s | grep buffer
    20560 packets pruned from receive queue because of socket buffer overrun
    997586 packets collapsed in receive queue due to low socket buffer
    20587 packets pruned from receive queue because of socket buffer overrun
    998646 packets collapsed in receive queue due to low socket buffer
[root@primary data]#

Lembre-se, o acima é uma caixa recém-reiniciada ... Cerca de 1 hora de atividade. Recentemente, tivemos uma caixa que subiu 2 meses, e esses contadores chegarão aos milhões altos (XXX milhões).

Nós tentamos mudar várias variáveis sysctl ...

Aqui estão as nossas variáveis sysctl que, acredito, estão relacionadas:

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

Alguém sabe como resolver esses pacotes apagados devido ao estouro do buffer de soquete / encapsulamento de pacotes (que eu entendo que não é tão ruim quanto os pacotes removidos)?

Obrigado.

    
por anonymous-one 28.06.2013 / 13:02

2 respostas

2

A julgar pelas informações que você forneceu, e já que você parece já ter aumentado os buffers, o problema provavelmente está na sua aplicação. O problema fundamental aqui é que, embora o sistema operacional receba os pacotes de rede, eles não são processados rápido o suficiente e, portanto, preenchem a fila.

Isso não significa necessariamente que o aplicativo seja muito lento por si só; também é possível que ele não consiga tempo de CPU suficiente devido a muitos outros processos em execução nessa máquina.

    
por 01.07.2013 / 09:29
2

Na verdade, você não aumentou necessariamente os buffers; apenas o tamanho máximo possível das filas.

Quando você abre um soquete, as filas são configuradas com o valor de: net.core.rmem_default = 212992 net.core.wmem_default = 212992

Portanto, aumentar o máximo não fará nada a menos que o aplicativo esteja chamando setsockopt () para aumentar o tamanho da fila (e falhando, se o máximo estiver abaixo do tamanho que está tentando alocar).

Tente aumentar os valores acima.

    
por 18.11.2014 / 22:39