Home » Бенчмаркинг сервера с помощью stress-ng, fio и iperf3
Бенчмаркинг сервера с помощью stress-ng, fio и iperf3

Бенчмаркинг сервера с помощью stress-ng, fio и iperf3

О чём эта статья и зачем всё это нужно?

Если ты когда-то снимал сервер “на пробу” и через пару дней ловил себя на мысли “а почему он так тормозит?”, “а что у меня с диском?” или “а насколько вообще быстро тут сеть?” — ты точно в теме. Эта статья — для тех, кто хочет не просто поднять VPS, облако, Docker-хост или выделенный сервер, а реально понять, на что способен твой железный друг. Здесь разберёмся, как грамотно и быстро протестировать сервер с помощью stress-ng, fio и iperf3. Это не только про циферки, а про уверенность: сервер не подведёт в самый ответственный момент.

Зачем вообще делать бенчмаркинг сервера?

  • Понять, выдержит ли сервер твой проект (или клиента) при реальной нагрузке.
  • Оценить, не “урезали” ли тебе ресурсы на VPS.
  • Сравнить разные тарифы, площадки, облака — и выбрать, где реально выгоднее.
  • Поймать узкие места: слабый диск, дохлая сеть, перегретый проц.
  • Настроить автоматический мониторинг и алерты (да, это реально!)

Почему эта тема важна?

Сколько раз видел: люди берут новый сервер, ставят туда всё подряд, а потом удивляются, почему всё работает медленно. Или наоборот — платят за “топовый” тариф, а по факту разница минимальна. Без бенчмарков — это как покупать кота в мешке. Бенчмаркинг — это твой рентген и тест-драйв одновременно. И если ты не хочешь быть тем самым чуваком, который настраивает продакшн “на авось”, — читай дальше.

Как это работает? Алгоритмы и структура

Что такое stress-ng?

Это утилита для нагрузки на процессор, память, I/O, сеть и даже GPU (если есть). Она умеет эмулировать кучу разных сценариев, чтобы проверить, как сервер ведёт себя под давлением. По сути, stress-ng — твой личный “злой тестировщик”, который не даст серверу расслабиться.

Что такое fio?

fio — это инструмент для тестирования дисковой подсистемы. Он может запускать разные сценарии чтения/записи, имитировать работу БД, файловых серверов, стриминг и т.д. fio — стандарт для оценки SSD, NVMe, RAID-массивов, да и просто для проверки “а не дохлый ли у меня диск?”.

Что такое iperf3?

iperf3 — это утилита для тестирования пропускной способности сети между двумя машинами. Позволяет замерить реальную скорость между серверами, узнать, где “бутылочное горлышко”, и оценить качество канала.

Как быстро и просто всё настроить?

Установка инструментов

  • stress-ng — есть почти везде:


sudo apt update && sudo apt install stress-ng # Для Debian/Ubuntu
sudo yum install stress-ng # Для CentOS/RHEL

  • fio:


sudo apt install fio # Для Debian/Ubuntu
sudo yum install fio # Для CentOS/RHEL

  • iperf3:


sudo apt install iperf3 # Для Debian/Ubuntu
sudo yum install iperf3 # Для CentOS/RHEL

Быстрый старт: stress-ng

Самый простой тест: нагрузить все ядра процессора на 60 секунд:


stress-ng --cpu 0 --timeout 60

Здесь --cpu 0 означает “использовать все доступные ядра”. Можно добавить --metrics-brief для краткой статистики.

fio: тестируем диск

Тест случайного чтения/записи по 1ГБ:


fio --name=randrw --ioengine=libaio --rw=randrw --bs=4k --size=1G --numjobs=4 --time_based --runtime=60 --group_reporting

Здесь --rw=randrw — режим случайного чтения/записи, --bs=4k — размер блока (4Кб), --numjobs=4 — 4 параллельных потока.

iperf3: тестируем сеть

На сервере (принимающая сторона):


iperf3 -s

На клиенте (запускаем тест к серверу):


iperf3 -c IP_СЕРВЕРА

Можно добавить -t 60 для теста на 60 секунд, -P 4 для 4 параллельных потоков.

Примеры и кейсы: что показывает практика?

Сценарий Ожидание Реальность Рекомендации
Тест CPU на VPS Все ядра работают на 100% Часть ядер “спят” или троттлятся Проверь, не overcommit ли у провайдера, нет ли лимитов на CPU time
fio на облаке Ожидал SSD-скоростей Видишь 10-20 MB/s Проверь, не network storage ли у тебя, уточни у поддержки
iperf3 между датацентрами Гигабит, как в рекламе 100-300 Мбит/с, иногда дропы Проверь трассировку (mtr), попробуй в разное время суток

Положительные кейсы

  • Нашёл “узкое место” в диске — сменил VPS на NVMe, и сайт летает.
  • Поймал throttling CPU на бюджетном облаке — перешёл на выделенный сервер (арендовать выделенный сервер).
  • Тестировал сеть между Docker-контейнерами — оказалось, мостовая сеть медленнее, чем host mode.

Отрицательные кейсы

  • Запустил fio на продакшн-базе — база легла (никогда не делай так!).
  • Запустил stress-ng без лимита — сервер ушёл в swap и стал неотзывчивым.
  • iperf3 снаружи через NAT — результаты были в 2 раза хуже, чем внутри датацентра.

Ошибки новичков, мифы и похожие решения

Частые ошибки

  • Запускать тесты на продакшн-серверах без предупреждения (всегда тестируй на staging).
  • Сравнивать результаты fio на разных файловых системах без учёта кэша.
  • Тестировать сеть только одним потоком (реальная нагрузка — это всегда параллельные подключения).
  • Забывать про throttling CPU в облаках (виртуализация часто режет пик нагрузки).
  • Игнорировать влияние фоновых задач (cron, бэкапы, мониторинг).

Мифы

  • Если VPS с SSD — значит, диск всегда быстрый (иногда это “shared SSD”, и ты делишь диск с сотней соседей).
  • Гигабитная сеть = 1000 Мбит/с всегда (нет, это максимум, а не гарантия).
  • fio всегда показывает правду (если не отключить кэш, тест будет “липой”).

Похожие программы и альтернативы

  • sysbench — для CPU, памяти, диска, но менее гибкий, чем fio.
  • bonnie++ — старый добрый бенчмарк для дисков, но не такой гибкий, как fio.
  • dd — для простых тестов записи/чтения, но не отражает реальную производительность.
  • netperf — альтернатива iperf3, но менее удобный вывод.

Официальные ссылки:

Статистика и сравнение с другими решениями

Инструмент CPU RAM Disk Network Гибкость Документация
stress-ng ++ ++ + + +++ ++
fio +++ +++ +++
iperf3 +++ ++ ++
sysbench ++ ++ + + +

Интересные факты и нестандартные применения

  • С помощью stress-ng можно эмулировать “апокалипсис”: нагрузить процессор, память, диск и сеть одновременно — и посмотреть, что “первым сдастся”.
  • fio позволяет тестировать не только локальные, но и сетевые файловые системы (NFS, Ceph, GlusterFS) — отличный способ проверить, насколько “живой” твой storage.
  • iperf3 умеет работать через IPv6 и даже через TOR (если заморочиться с прокси).
  • Можно скриптовать запуск бенчмарков и строить красивые графики в Grafana через Prometheus-экспортеры.
  • fio поддерживает “job files” — можно сохранять и делиться своими сценариями тестирования.

Автоматизация и новые возможности

  • Пишешь скрипт, который после деплоя нового VPS (арендовать VPS) сразу делает бенчмарки и шлёт результаты в Slack/Telegram.
  • Можно интегрировать stress-ng в CI/CD пайплайн — чтобы убедиться, что сервер выдержит нагрузку перед выкатыванием релиза.
  • fio + cron = автоматический еженедельный тест диска с уведомлениями о деградации SSD.
  • iperf3 можно запускать между несколькими локациями и строить карту задержек/скоростей между датацентрами.
  • С помощью Ansible или Terraform можно автоматизировать развёртывание и тестирование сразу после поднятия инфраструктуры.

Выводы и рекомендации

Бенчмаркинг — это не только про “похвастаться цифрами”. Это про понимание своих ресурсов и уверенность в их стабильности. stress-ng, fio и iperf3 — три кита, на которых держится грамотный подход к тестированию серверов любого типа: VPS, облако, Docker-хосты, bare-metal.

  • Используй stress-ng для проверки CPU, памяти и комплексных сценариев нагрузки.
  • fio — твой лучший друг для тестирования дисков, RAID, SSD и storage-систем.
  • iperf3 — незаменим для тестирования реальной пропускной способности сети между серверами.
  • Не доверяй маркетингу и “бумажным” характеристикам — всегда проверяй сам.
  • Не запускай тяжёлые тесты на продакшене без согласования.
  • Сохраняй сценарии тестов, автоматизируй запуск и анализируй динамику — это поможет ловить деградацию железа и “подставы” от провайдеров.
  • Сравнивай результаты между разными провайдерами и площадками — иногда разница в цене не оправдывает разницу в производительности.

И помни: хороший бенчмаркинг — это не цель, а инструмент. Он помогает выбрать правильный сервер, оптимально настроить инфраструктуру и избежать неприятных сюрпризов. Не ленись тестировать — и твои проекты будут работать быстро, стабильно и предсказуемо!


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

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

Leave a reply

Your email address will not be published. Required fields are marked