Тест скорости VPS: как проверить пропускную способность и задержку сервера с помощью iperf3, Speedtest CLI и curl

14 мин чтения 3 просмотров 0
Содержание

Грамотный тест скорости VPS отвечает на два вопроса: какую полосу сервер способен отдавать и принимать и насколько быстро пакеты идут между сервером и пользователями. В этой инструкции показано, как проверить пропускную способность и задержку облачного или выделенного сервера JUSTG на Debian/Ubuntu или CentOS/Rocky/AlmaLinux с помощью iperf3 в обе стороны, Speedtest CLI и простой загрузки через curl, а также как оценить результаты относительно порта 500 Мбит/с, типичного для облачных серверов JUSTG в Йоханнесбурге, Москве, Токио и Сеуле.

Шаг 1: Установите iperf3 для теста между двумя машинами

iperf3 измеряет чистую пропускную способность TCP между двумя вашими хостами без сайтов и CDN посередине. Утилита нужна и на сервере JUSTG, и на машине, с которой вы тестируете (другой сервер или ваш ПК; есть сборки iperf3 и для Windows).

# Debian / Ubuntu
apt update && apt install -y iperf3

# CentOS / Rocky Linux / AlmaLinux
dnf install -y iperf3

Шаг 2: Запустите сервер iperf3 и проверьте оба направления с -R

На сервере JUSTG откройте TCP-порт 5201 и запустите iperf3 в режиме сервера:

# Debian / Ubuntu with UFW
ufw allow 5201/tcp

# CentOS / Rocky / AlmaLinux with firewalld (until next reload)
firewall-cmd --add-port=5201/tcp

# start the iperf3 server (Ctrl+C to stop)
iperf3 -s

На другой машине запустите клиент. По умолчанию клиент отправляет данные на сервер (с точки зрения клиента это отдача). Ключ -R меняет направление: сервер передает данные вам — именно так ваши посетители скачивают страницы и файлы. -P 4 открывает четыре параллельных потока, -t 30 задает длительность 30 секунд.

# upload test: your machine -> JUSTG server
iperf3 -c 203.0.113.10 -P 4 -t 30

# download test: JUSTG server -> your machine (reverse mode)
iperf3 -c 203.0.113.10 -P 4 -t 30 -R

Смотрите строки [SUM] в конце. Значение receiver — реальная пропускная способность, столбец Retr — число повторных передач TCP.

[SUM]   0.00-30.00  sec  1.64 GBytes   470 Mbits/sec   15   sender
[SUM]   0.00-30.03  sec  1.64 GBytes   469 Mbits/sec        receiver
После теста остановите iperf3 сочетанием Ctrl+C и снова закройте порт 5201 (например, ufw delete allow 5201/tcp), чтобы тестовый сервис не оставался открытым в интернет.

Шаг 3: Используйте Speedtest CLI (Ookla) или speedtest-cli

Если второй машины нет, быстрее всего проверить скорость через публичный сервер Speedtest. Официальный Ookla Speedtest CLI устанавливается из репозитория Ookla:

# Debian / Ubuntu
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | bash
apt install -y speedtest

# CentOS / Rocky Linux / AlmaLinux
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh | bash
dnf install -y speedtest

# run a test (nearest server), list servers, or pick one by ID
speedtest --accept-license --accept-gdpr
speedtest -L
speedtest -s 12345

Альтернатива — старая утилита на Python speedtest-cli. В Debian/Ubuntu удалите одну из них перед установкой другой, так как команды называются похоже.

# Debian / Ubuntu
apt install -y speedtest-cli
# any distribution with Python 3
pip3 install speedtest-cli

speedtest-cli --simple
speedtest-cli --list | head -n 20
speedtest-cli --server 12345 --simple

Результат сильно зависит от выбранного тестового сервера: загруженный или удаленный узел может показать низкие цифры даже при исправном порте. Попробуйте два-три сервера, включая расположенный рядом с вашими пользователями.

Шаг 4: Проверьте скорость загрузки через curl

Реальная загрузка файла показывает, на что способно одно HTTP-соединение. Скачайте большой файл с хорошо подключенного зеркала, не сохраняя его:

curl -o /dev/null -w "avg speed: %{speed_download} bytes/s, total: %{time_total}s\n" \
  https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz

# wget prints the speed in MB/s at the end
wget -O /dev/null https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz

curl выводит байты в секунду. Разделите на 1 000 000, чтобы получить МБ/с, а МБ/с умножьте на 8, чтобы получить Мбит/с.

Шаг 5: Оцените результаты относительно порта 500 Мбит/с

  • Единицы: 500 Мбит/с (мегабит) теоретически равны 62,5 МБ/с (мегабайт). С учетом накладных расходов TCP/IP около 470–480 Мбит/с в iperf3 или примерно 55–59 МБ/с при загрузке означают, что порт используется полностью.
  • Один поток и несколько: на дальних маршрутах одно TCP-соединение ограничено задержкой. Если с -P 4 скорость намного выше, порт в порядке, а ограничение связано со временем приема-передачи.
  • Направление: отдача и загрузка могут различаться, потому что маршруты в разные стороны разные. Всегда тестируйте с -R и без него.
  • Задержка: iperf3 ее не измеряет; выполните ping -c 50 до региона пользователей и смотрите на среднее значение и джиттер, а не только на лучшее.
  • Другая сторона: домашний канал, Wi-Fi или перегруженный публичный сервер часто и являются настоящим узким местом.

Шаг 6: Тестируйте в часы пик

Международные каналы сильнее всего загружены вечером по времени пользователей. Повторите тесты в это время и сравните со спокойным периодом. Простой цикл сохранит несколько замеров:

# three tests, 10 minutes apart, saved to a log file
for i in 1 2 3; do date; speedtest-cli --simple; sleep 600; done | tee -a speedtest.log

Частые вопросы

Speedtest показывает 200 Мбит/с на VPS с портом 500 Мбит/с. Это неисправность?

Не обязательно. Попробуйте другие серверы, измерьте iperf3 с -P 4 до своей машины и проверьте обратное направление. Если разные методы стабильно показывают намного меньше скорости порта, обратитесь в поддержку с результатами.

Почему загрузка из Китая медленнее, чем из Европы?

Более высокая задержка и загруженные трансграничные каналы ограничивают скорость одного соединения. Сравните результаты в часы пик и вне их и проверьте маршрут тестом MTR.

Можно ли держать iperf3 запущенным постоянно?

Лучше не стоит. Запускайте его только на время теста и закрывайте порт после.

Если проблему решить не удалось, создайте тикет в техническую поддержку JUSTG и приложите вывод тестов и время их проведения.

Помог ли вам данный ответ?