Нужна помощь в выяснении случайного тайм-аута соединения на сервере

342
amnesia

Я обнаружил эту проблему, пытаясь загрузить пользовательский сервер веб-сокетов node.js, где некоторые сокеты не могут подключиться (они превышают время ожидания подключения). Похоже, что это не связано с текущей загрузкой, так как я также могу случайно получить ошибку только при тестировании одного потока клиента.

Похоже, это не связано с node.js, так как я также могу воспроизвести проблему нагрузочного тестирования nginx, обслуживающего статическую страницу на том же сервере. Общая частота отказов, по-видимому, составляет от 7 до 10% входящих подключений.

Это не является проблемой на моем локальном клиентском компьютере или в Интернет-соединении, так как я могу воспроизвести проблему с другого компьютера в другом месте.

Я проверил все нормальные настраиваемые параметры (somaxconn, max open files и т. Д.), И, насколько я могу судить, я далеко не достигну каких-либо ограничений. Я не вижу никаких записей в системном журнале, касающихся этой проблемы. Я также попытался полностью отключить iptables, чтобы предотвратить проблемы с брандмауэром.

Сервер является Ubuntu LTS 16.04 (i7, 32 ГБ) и является выделенной машиной на объекте colo. Прежде чем связаться с ними, я хотел посмотреть, смогу ли я найти больше данных о том, является ли это проблемой на уровне O / S, на уровне машины или на уровне сети.

Я смог перехватить tcpdump неудачного соединения, но я не совсем уверен, что с этим делать:

07:19:29.952730 IP localmachine.53949 > server.30312: Flags [S], seq 2408213894, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0  07:19:29.952879 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0  07:19:30.951778 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0  07:19:32.949553 IP localmachine.53949 > server.30312: Flags [S], seq 2408213894, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0  07:19:32.949650 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0  07:19:34.947783 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0  07:19:38.947699 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0  07:19:38.950399 IP localmachine.53949 > server.30312: Flags [S], seq 2408213894, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0  07:19:38.950438 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0  07:19:46.947769 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0  

Похоже, что ACK от сервера никогда не попадает к клиенту, и клиент продолжает пытаться выполнить SYN, а сервер продолжает пытаться отвечать, пока не истечет время ожидания соединения. Это где мои знания раскрываются, и я не совсем уверен, что делать с этой информацией. Что может вызвать этот тип проблемы, или что еще я должен посмотреть?

1
Похоже, какая-то асимметричная маршрутизация или дублирование проблемы с IP-адресом клиента. Можете ли вы одновременно наблюдать сбой соединения и работоспособность соединения в вашем `tcpdump`? Или все неисправные соединения сгруппированы в одинаковые промежутки времени? `traceroute`, выполняемый на сервере, может помочь. `tcpdump -e` также может помочь увидеть MAC-адреса. Gohu 6 лет назад 0
@ Gohu - Да, вышеупомянутый захват был сделан с 2-мя подключениями одновременно, одно не удалось, а другое - нет. Я могу раскрутить 100 соединений, и около 10 не получится, а остальные 90 будут в порядке. amnesia 6 лет назад 0

0 ответов на вопрос