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

Диагностика проблем с задержкой в ​​сети

У меня есть два сервера с гигабитными сетевыми картами, которые испытывали серьезные проблемы с задержкой при обмене данными друг с другом. В конце концов, виноватым стало то, что на одном из серверов был установлен порт коммутатора 100 МБ.

пинг серверов всегда возвращал <1 мс

Есть ли инструмент, который мог бы показать фактическую задержку / скорость передачи между серверами по сравнению с максимально возможным?

Осуществляйте мониторинг состояния, собирайте данные, визуализируйте.

  1. В вашей ОС есть инструменты для сообщения о текущем состоянии ваших сетевых интерфейсов. Используйте их и сравните с ожидаемым состоянием. Автоматизируйте это.
  2. Для сбора образцов используйте snmp или собственные счетчики. Используйте 64-битные счетчики для быстрых интерфейсов или действительно небольшого интервала выборки.
  3. Когда вы собираете статистику, графите ее. В наши дни графит очень популярен.

Затем поймите с помощью мониторинга, это никогда в реальном времени. Вы всегда смотрите в прошлое.

И посмотрите Джейсона Диксона на DevOpsDays в Риме: Состояние мониторинга открытого исходного кода: хорошее, плохое, ужасное и взгляд в наше будущее.

Вы можете использовать инструмент как iperf чтобы проверить фактическую задержку, джиттер и скорость передачи между двумя серверами. Но это инструмент тестирования.

В вашем конкретном случае ОС было бы совершенно очевидно, что ссылка на сайт скорости различных интерфейсов были.

Проверить задержку не так уж и сложно. Вы можете проверить свою задержку с любыми двумя серверами, подключенными через сеть.

Выполните серию «пинг-понга» между серверами в течение заданного времени (например, 10 секунд). Разделите завершенные «пинг-понги» между серверами по времени. Теперь у вас есть транзакции в секунду.

Давайте пробежимся по цифрам.

Продолжительность теста: 10 секунд Выполнено 5000 транзакций.

Таким образом, вы выполняли 1000 транзакций в секунду. Если ваша транзакция для пинг-понга составляла 128 байт, вы выполняли 128 000 байт в секунду. Это равняется 1 024 000 битам в секунду. Инвертируйте это число (1/1 024 000), и вы можете сказать, что задержка вашей транзакции составила 0,000000978. Это 978 наносекунд за поездку в оба конца.

978 наносекунд - это ваши секунды на бит. Вот сколько времени потребовалось, чтобы отправить бит с одной машины на другую и обратно. Это определение задержки.

Хороший инструмент для выполнения этого теста - netperf (http://www.netperf.org/netperf/). Он будет запускать тест пинг-понга в течение определенного периода времени и давать вам статистику, которую я перечислил выше.

На одном сервере запустите "netserver"

На другом сервере запустите netperf -t UDP_RR -H -l 10 - -r 32

Вы получите всю информацию, которую я перечислил выше. Вы можете запустить математику с этими результатами.

Приветствуем Руководство пользователя Solarflare Onload. Они очень подробно описывают эту методологию тестирования.