Гинерирование большого количества трафика, тестирование пропускной способности (очередной синтетический тест)
В продление темы высоких нагрузок и синтетических тестов ……
Имеем задачу ну к примеру необходимо проверить пропускную способность некоторого интернет или просто сетевого канала , пропускную способность собственного оборудования в серверной , грамотность настройки сетевого оборудования либо фаервола на вашем сервере. Встает вопрос каким способом генерировать большое количество трафика или сетевых пакетов а что еще не мало важно так это иметь возможность задавать размер пакета, тип пакета, и прочие характеристики …..
Да сеть пара «дедовских» методов всякие там WEB Спидтесты , можно через ФТП, СФТП, ХТТП погонять большой файл но на широких каналах врядли вы нагрузите его на все 100% в виду задержек при чтении-записи файла с носителя да и отдающий сервис (тотже ФТП) будет давать значительную погрешность
Но Решение есть и зовут его iperf
Работает он как клиент-серверное приложение, кросс платформенный
сервер слушает определенный порт а клиент генерирует и отправляет трафик
от теории приступим к практике :
на Debian/Ubuntu он так и называется iperf
устанавливаем его на стороне сервера и на стороне клиента
apt-get install iperf
на стороне сервера запускаем его
iperf -s
на стороне клиента запускаем
iperf -c X.X.X.X
где X.X.X.X — ip сервера
генерирование трафика началось по умолчанию скорость потока не ограничена, время теста 10 секунд, количество потоков = 1
после окончания теста вы увидите отчет (отчет выводиться как на стороне клиента так и на стороне сервера)
Клиент :
------------------------------------------------------------ Client connecting to 192.168.2.110, TCP port 5001 TCP window size: 16.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.10 port 59970 connected with 192.168.2.110 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 113 MBytes 94.9 Mbits/sec
Сервер :
[ 4] local 192.168.2.110 port 5001 connected with 192.168.2.10 port 59970 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.1 sec 113 MBytes 94.0 Mbits/sec
теперь разберем основные ключи на стороне клиента
-i1 — задаем интервал вывода отчета в секундах (мы задали 1 секунду)
-t 60 — время теста в секундах (60 секунд)
-P 5 — количество потоков (5)
более подробно
iperf --help
не стоит обходить стороной кросс платформенный GUI клиент jperf написанный на Java
все предельно просто и понятно все опции прокомментированы
установка проста :
Распаковываете архив куда-нибудь и в зависимости от вашей ОС запускаете соответственно .bat или .sh скрипт не забывая что необходимо наличие Java движка на вашем ПК
скачать jperf и исходники iperf можно тут :