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

Высокая задержка, но пинг показывает низкую задержку

Мы наблюдаем задержки ~ 100-300 мс для служб, обращающихся к удаленному ресурсу в той же подсети, но когда мы используем ping (размер ping был такого же размера, как и для обычных пакетов), мы видим ответы 5 мс или меньше. Что еще мы должны проверить?

Что означает «задержка»?
Сравниваете ли вы время отклика эха ICMP со временем приема-передачи обработки приложения?

Если да, то это объяснило бы это - а также посоветовало бы вам не сравнивать яблоки и апельсины :)

Может быть, у вас есть потери пакетов [которые вызывают повторные передачи], например, для больших пакетов?

может попробовать ping -s 1400 address под linux или ping -l 1400 address под окнами.

если это не поможет, попробуйте посмотреть трафик с помощью WireShark - может быть, есть какие-то странные ретрансляции, испорченные пакеты?

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

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

Как вы подозреваете, задержка ping! = Время прохождения TCP туда и обратно, особенно если данные передаются. Возможно, все это связано с отложенными ACK (которые могут накладывать ~ 200 мс, стандартная настройка по умолчанию) или плохим взаимодействием между Nagle / и DACK, которое может подтолкнуть его до ~ 500 мс. Захват пакетов здесь в порядке.

Также обратите внимание, что таймер отложенного подтверждения не зависит от потока TCP и создается при загрузке системы. Таким образом, он может срабатывать в любое время между 1-200 мс внутри потока и обычно вызывает задержку в стиле «диапазона», как вы описываете.