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

Измерение задержки в сети

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

Нагрузка на сервер действительно низкая (около 15% загрузки процессора), однако это все еще может быть проблемой сервера из-за переключения контекста потоков, и возможно, что данные ждут, пока сервер начнет обработку. Моя установка выглядит следующим образом:

Клиент -> Балансировщик нагрузки -> Прокси-сервер -> Сервер приложений -> Агент

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

Серверы - Windows Server 2008R2, клиент и агент - Windows XP / 7.

Я думал, что могу установить wirehark на каждую машину, синхронизировать часы и вручную проверять пакеты, захваченные на каждой машине. Однако я надеюсь, что есть лучшее решение.

Psping от Руссиновича выполняет пинг ICMP, пинг TCP, тестирование полосы пропускания и многое другое.

http://technet.microsoft.com/en-us/sysinternals/jj729731.aspx

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

Wireshark может быть полезен для выборочной проверки одной или двух станций, у которых проявляются симптомы. Он имеет отличную возможность построения графика времени приема-передачи (RTT). Если вы действительно теряете пакеты, вам потребуется больше, вам нужно будет выполнить коррелированный захват - по одному с каждой стороны и определить, где пакет может быть отправлен, но не получен, или что-то еще, например, повторная передача. Вы также можете определить, происходит ли много повторных передач.

Если вы отправляете много небольших TCP-пакетов, возможно, вы столкнетесь с задержанным подтверждением по умолчанию на 200 мс. Если симптом воспроизводится, он может проявляться в захвате пакета как 200-миллисекундные промежутки между пакетами и соответствующими ACK.

https://blogs.technet.com/b/nettracer/archive/2013/01/05/tcp-delayed-ack-combined-with-nagle-algorithm-can-badly-impact-communication-performance.aspx

Wireshark кажется излишним, если вы просто тестируете сеть. ping будет работать, в простейшем случае просто запустив заданное количество эхо-запросов во время вашего теста и затем проанализировав результаты, или немного пойдем дальше, написав небольшую программу, которая запускает тест по расписанию, а затем сохраняет данные в файл CSV. Вы можете запустить это между любыми двумя узлами в сети, между которыми вы хотите проверить задержку.

Если вы ищете общую задержку для программы, вам понадобится что-то другое.

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