У меня есть экземпляр сервера на 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
продолжает увеличиваться. Я попытался выяснить, что может быть причиной этого, но безуспешно, хотя мне кажется, что это нужно где-то скрыть.
В: Каковы могут быть причины этого и как я могу это решить?
Я провел расследование:
Бег 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
), но это не имело значения.
Запуск нескольких 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
, но по-прежнему возникают те же ошибки.
Бег 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
Бег 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
ценности, но безуспешно.