Иногда появляется необходимость померить скорость соединения вашего сервера с интернетом или другим сервером. Я рассмотрю как с помощью утилиты iperf померить скорость соединения между двумя серверами.
Итак нам потребуется сама утилита iperf на обоих машинах:
sudo apt-get install iperf
Напомню, что я по прежнему использую debian squeeze.
После того, как iperf был установлен на подопытных серверах нам потребуется настроить правила firewall, у меня это делается простым добавлением:
iptables -A INPUT -p TCP -s 0/0 --dport 5001 -j allowed
Поясню, данное правило надо применить на одном из серверов, к которому будет осуществляться подключение, порт 5001, это порт по умолчанию для программы iperf.
Теперь на сервере (там, где применили правило firewall) запускаем программу с ключом:
iperf -s
А на клиенте:
iperf -c x.x.x.x
Где x.x.x.x адрес сервера.
Результат, например, будет таким:
На сервере
------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local x.x.x.x port 5001 connected with y.y.y.y port 36905 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.3 sec 23.5 MBytes 19.1 Mbits/sec
На клиенте
------------------------------------------------------------ Client connecting to x.x.x.x, TCP port 5001 TCP window size: 16.0 KByte (default) ------------------------------------------------------------ [ 3] local y.y.y.y port 36905 connected with x.x.x.x port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.1 sec 23.5 MBytes 19.6 Mbits/sec
В отчете работы программы все очень наглядно, iperf говорит, что передал 23,5 MBytes со скоростью 19,6 Mbits/sec.
Посмотрим какие еще параметры может принимать iperf
iperf -h
Usage: iperf [-s|-c host] [options] iperf [-h|--help] [-v|--version]
Client/Server: -f, --format [kmKM] в каком формате выводить отчет, Kbits, Mbits, KBytes, MBytes -i, --interval # seconds between periodic bandwidth reports -l, --len #[KM] length of buffer to read or write (default 8 KB) -m, --print_mss print TCP maximum segment size (MTU - TCP/IP header) -o, --output <filename> output the report or error message to this specified file -p, --port # server port to listen on/connect to -u, --udp use UDP rather than TCP -w, --window #[KM] TCP window size (socket buffer size) -B, --bind <host> bind to <host>, an interface or multicast address -C, --compatibility for use with older versions does not sent extra msgs -M, --mss # set TCP maximum segment size (MTU - 40 bytes) -N, --nodelay set TCP no delay, disabling Nagle's Algorithm -V, --IPv6Version Set the domain to IPv6
Server specific: -s, --server run in server mode -U, --single_udp run in single threaded UDP mode -D, --daemon run the server as a daemon
Client specific: -b, --bandwidth #[KM] for UDP, bandwidth to send at in bits/sec (default 1 Mbit/sec, implies -u) -c, --client <host> run in client mode, connecting to <host> -d, --dualtest Do a bidirectional test simultaneously -n, --num #[KM] number of bytes to transmit (instead of -t) -r, --tradeoff Do a bidirectional test individually -t, --time # time in seconds to transmit for (default 10 secs) -F, --fileinput <name> input the data to be transmitted from a file -I, --stdin input the data to be transmitted from stdin -L, --listenport # port to recieve bidirectional tests back on -P, --parallel # number of parallel client threads to run -T, --ttl # time-to-live, for multicast (default 1) -Z, --linux-congestion <algo> set TCP congestion control algorithm (Linux only)
Miscellaneous: -x, --reportexclude [CDMSV] exclude C(connection) D(data) M(multicast) S(settings) V(server) reports -y, --reportstyle C report as a Comma-Separated Values -h, --help print this message and quit -v, --version print version information and quit
[KM] Indicates options that support a K or M suffix for kilo- or mega-
The TCP window size option can be set by the environment variable TCP_WINDOW_SIZE. Most other options can be set by an environment variable IPERF_<long option name>, such as IPERF_BANDWIDTH.
Report bugs to <iperf-users@lists.sourceforge.net>