- Home »

Бенчмаркинг сервера с помощью 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 — незаменим для тестирования реальной пропускной способности сети между серверами.
- Не доверяй маркетингу и “бумажным” характеристикам — всегда проверяй сам.
- Не запускай тяжёлые тесты на продакшене без согласования.
- Сохраняй сценарии тестов, автоматизируй запуск и анализируй динамику — это поможет ловить деградацию железа и “подставы” от провайдеров.
- Сравнивай результаты между разными провайдерами и площадками — иногда разница в цене не оправдывает разницу в производительности.
И помни: хороший бенчмаркинг — это не цель, а инструмент. Он помогает выбрать правильный сервер, оптимально настроить инфраструктуру и избежать неприятных сюрпризов. Не ленись тестировать — и твои проекты будут работать быстро, стабильно и предсказуемо!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.