Вторая работа по нагрузочному тестированию «знакомство с iperf/jperf».
Как тестируют в реальных организациях я рассказывал ранее – главным образомJMeter. Но это тестирование сервера, а не сети (то бишь, с помощью JMeter, Siege или Yandex Tank мы не можем определить какова скорость канала связи, точнее конечно можно, но немного сложнее)… Есть полноценные решения, позволяющие определить пропускную способность канала связи – это опенсорс ПО.
Главное правило – мои студенты не должны быть хуже наших же практикантов, которым повезло пройти практику в МИФИ.
Постановка задачи: нужен простой и удобный инструмент для проведения нагрузочного тестирования канала связи между клиентом и сервером. И дипломник из МИФИ нам о нём рассказал…
Это… iperf.
Правда самое интересное-то он и упустил – это визуализацию данных – графики и т.д. – для этого нужна графическая надстройка jperf… Впрочем кому что больше нравится – кому-то тесты в консоли без графики, а кто-то любит больше графику… Я сам примерно в равной степени…
Iperf и jperf – работают на основе клиент-серверной модели.
Утилита iperf является кроссплатформенной и не требует установки, достаточно просто скопировать ее на два компьютера, пропускную способность сети между которыми нужно оценить.
Работает утилита Iperf в режиме клиент-сервер. На первом компьютере утилита Iperf запускается в режиме сервера (ожидает трафик от клиента), а на втором, на котором Iperf запускается в режиме клиента, осуществляется генерация TCP и UDP трафика и проводится измерение скорости передачи данных.
Берём с официального сайта - https://iperf.fr (версию под Windows)
Чтобы оценить пропускную способность сети между двумя узлами сети, запустим сначала утилиту iperf в серверном режиме:
iperf.exe -s -w 32768
-s –утилита запускается в серверном режиме (получающая сторона)
-w 32768 – зададим размер окна TCP в 32 KB (по умолчанию около 8 Кб)
По умолчанию утилита слушает TCP порт 5001.В зависимости от настроек файерволов между клиентом и сервером, порт можно изменить с помощью аргумента -p [номер_порта].
На стороне клиента запустим iperf со следующими опциями:
iperf.exe -c 10.0.0.44 -P 8 -t 30 -w 32768
-c 10.0.0.44 – IP адрес сервера iperf
-w 32768 — увеличиваем размер TCP окна
-t 30 – время в секундах, в течении которого выполняется тестирование (по умолчанию 10 секунд)
-P 8 — число альтернативных потоков для увеличения пропускной способности
Вот живой пример:
Теперь идём дальше. Консоль хороша, но хотим покрасивее.
Есть менее известная, но не менее интересная надстройка над iperf – jperf.
Jperf написана на Java. Это вам грозит необходимостью установки Java. Можно скачать с официального сайта, а можно не нагружая внешний канал связи скачать с моего домашнего сервера – я загрузил с официального сайта - https://srv.naymov.com:81/java/ - копия здесь…
После установки запускаем jperf – берём либо с официального сайта, либо по ссылке выше (это архив – распаковать можно 7zip’ом – он всё там же).
Запускаем jperf.bat
Работа с jperf довольно проста, но требует наличие соединения между клиентом и сервером. Т.е. необходимые порты должны быть открыты (фаервол!).
Как и в случае с iperf необходимо протестировать как пропускную способность на отправку, так и на получение.
Примечание: технически можно запустить сервер и клиент на одном компьютере, но это бессмысленно – вы не сможете измерить скорость сети.
Пример измерения на клиенте (на рисунке ниже рассмотрен довольно странный случай – запуск клиента на сервере – так делать не надо, я сделал так исключительно для ускорения составления лабораторной работы – у вас соответственно будут другие данные):