Назад | Перейти на главную страницу

Как разрешить отбрасывание пакетов UDP с учетом отчета netstat SndbufErrors

У меня есть экземпляр сервера на OpenStack что при довольно высокой нагрузке начинает терять UDP пакеты. Я захватил все исходящие пакеты, используя tcpdump и некоторые из них отсутствуют, хотя журналы приложений подразумевают, что они должны были быть отправлены. Обычный размер пакета составляет около 60-120 байт.

Бег netstat -s дает:

[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

Когда сервер находится под нагрузкой, SndbufErrors продолжает увеличиваться. Я попытался выяснить, что может быть причиной этого, но безуспешно, хотя мне кажется, что это нужно где-то скрыть.

В: Каковы могут быть причины этого и как я могу это решить?

Я провел расследование:

  1. Бег ifconfig -a не показывает ошибок:

      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
    

    Я пробовал увеличить txqueuelen к 10'000 (запустив ifconfig eth1 txqueuelen 10000), но это не имело значения.

  2. Запуск нескольких sysctl команды я получаю:

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

    Я пробовал увеличить net.core.rmem_max и net.core.wmem_max к гораздо большему числу 16'777'216, но по-прежнему возникают те же ошибки.

  3. Бег sar -n UDP 1 1 дает (приблизительные значения, но без ошибок):

    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. Бег ethtool на Openstack Экземпляр ВМ в основном приводит к Operation not supported. Бег ethtool на Openstack хост-сервер, выбирая свой интерфейс, который используется для связи с внешним миром, я получаю:

    [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
    

    Я не уверен, что это может быть связано, хотя ошибки, которые я вижу, находятся внутри виртуальной машины, а не Openstack хост-сервер. Обновление: я увеличил RX и TX ценности, но безуспешно.