Como resolver pacotes UDP sendo descartados devido ao relatório netstat SndbufErrors

2

Eu tenho uma instância do servidor em um OpenStack que, em uma carga bastante alta, começa a perder UDP pacotes. Capturei todos os pacotes de saída usando tcpdump e alguns deles estão ausentes, mesmo que os logs de aplicativos indiquem que eles deveriam ter sido enviados. O tamanho usual do pacote é de cerca de 60 a 120 bytes.

A execução de netstat -s dá:

[root@myServer] ~> netstat -s | grep Udp: -A 5
Udp:
    3855490640 packets received
    133199 packets to unknown port received.
    89 packet receive errors
    4116940753 packets sent
    SndbufErrors: 1396176

Quando o servidor está sob carga, SndbufErrors continua aumentando. Eu tentei descobrir o que poderia estar causando isso, mas sem sorte, embora pareça que isso deveria estar coberto em algum lugar.

P: Quais podem ser as razões para isso e como posso resolver isso?

Investigação que fiz:

  1. A execução de ifconfig -a não mostra erros:

      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:6361554048 errors:0 dropped:0 overruns:0 frame:0
      TX packets:6902945025 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
    

    Eu tentei aumentar txqueuelen para 10'000 (executando ifconfig eth1 txqueuelen 10000 ), mas isso não fez diferença.

  2. Executando vários comandos sysctl que recebo:

    net.core.rmem_max = 124928
    net.core.wmem_max = 4194304
    net.core.rmem_default = 124928
    net.core.wmem_default = 124928
    

    Eu tentei aumentar net.core.rmem_max e net.core.wmem_max para um número muito maior 16'777'216 , mas continuo recebendo os mesmos erros.

  3. A execução de sar -n UDP 1 1 dá (valores aproximados, mas sem erros):

    05:47:31 PM    idgm/s    odgm/s  noport/s idgmerr/s
    05:48:46 PM  23000.00  24000.00      0.00      0.00
    
  4. A execução de ethtool na instância Openstack VM resulta principalmente em Operation not supported . Executando ethtool no servidor host Openstack escolhendo sua interface que é usada para se comunicar com o mundo externo, recebo:

    [root@myServer] ~> ethtool em1
        Speed: 1000Mb/s
        ... 
    
    [root@myServer] ~> ethtool -g em1
        Ring parameters for em1:
        Pre-set maximums:
        RX:             4096
        RX Mini:        0
        RX Jumbo:       0
        TX:             4096
        Current hardware settings:
        RX:             256
        RX Mini:        0
        RX Jumbo:       0
        TX:             256
    

    Não estou convencido de que isso possa estar relacionado, já que os erros que vejo estão dentro da VM e não no servidor host Openstack . Atualização: eu aumentei os valores de RX e TX , mas não obtive sucesso.

por eddyP23 07.03.2016 / 16:51

0 respostas