Гид по технологиям

Как тестировать производительность сервера с помощью sysbench

• 4 min read • Бенчмаркинг • Обновлено 18 Nov 2025
Тестирование производительности с sysbench
Тестирование производительности с sysbench

Что такое sysbench и когда он полезен

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

Краткое определение: sysbench — модульный бенчмарк для CPU, IO, памяти и СУБД.

Важно: результаты имеют смысл только в сравнении между системами или при повторяемых условиях на одной системе.

Краткая методология (как получить воспроизводимые результаты)

  • Устанавливайте одинаковую версию sysbench на всех тестовых узлах.
  • Отключайте фоновые задачи и планировщики, которые могут мешать (cron, backup, автоматические обновления).
  • Убедитесь, что тестовый файл для IO значительно больше оперативной памяти.
  • Проводите не менее 3 повторов и берите медиану/среднее.
  • Фиксируйте конфигурацию (CPU, RAM, диск, контроллеры, настройки ядра и MySQL).

Мини‑методика: подготовка → запуск (фиксированное время) → очистка → повтор.

Установка sysbench

На Debian/Ubuntu установите так:

sudo apt-get install sysbench

На CentOS/Fedora — через репозиторий EPEL. Добавьте EPEL и обновите систему:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*  
yum -y install epel-release  
yum -y update

Затем установите sysbench:

yum install sysbench

Полезно посмотреть параметры:

man sysbench

CPU: пример бенчмарка

Команда для простого CPU‑теста (проверка простых чисел до 20000):

sysbench --test=cpu --cpu-max-prime=20000 run

Пример вывода (сокращённо):

root@server1:~# sysbench --test=cpu --cpu-max-prime=20000 run  
sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          23.8724s
    total number of events:              10000
    total time taken by event execution: 23.8716

На что смотреть: основное число — total time (общее время). Чем меньше — тем лучше. Сравнивайте между машинами и учитывайте конфигурацию.

File IO: подготовка и запуск

Для корректного измерения IO нужно создать тестовый файл, заметно превышающий ОЗУ. В примере используется 150GB.

Подготовка (создаст набор файлов):

sysbench --test=fileio --file-total-size=150G prepare

Запуск случайного чтения/записи (пример на 300 секунд):

sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run

Пример вывода (сокращённо):

root@server1:~# sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
...
Read 9.375Mb  Written 6.25Mb  Total transferred 15.625Mb  (53.316Kb/sec)
    3.33 Requests/sec executed

Test execution summary:
    total time:                          300.0975s
    total number of events:              1000
    per-request statistics:
         avg:                                158.76ms

На что смотреть: показатель пропускной способности (Kb/sec или MB/s) и 95‑й процентиль времени отклика.

Очистка тестовых файлов:

sysbench --test=fileio --file-total-size=150G cleanup

Примечание: в тексте и примерах 150G — это 150 ГБ.

MySQL: подготовка, запуск и очистка

Подготовка таблицы с 1 000 000 строк (замените yourrootsqlpassword на пароль root MySQL):

sysbench --test=oltp --oltp-table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword prepare

Пример вывода:

root@server1:~# sysbench --test=oltp --oltp-table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword prepare  
sysbench 0.4.12: multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Creating table 'sbtest'...
Creating 1000000 records in table 'sbtest'...
root@server1:~#

Запуск чтения с 8 потоками на 60 секунд (читайте, используйте свой пароль):

sysbench --test=oltp --oltp-table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run

Пример вывода (сокращённо):

root@server1:~# sysbench --test=oltp --oltp-table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
...
transactions:                        160990 (2683.06 per sec.)

Test execution summary:
    total time:                          60.0024s
    total number of events:              160990
    per-request statistics:
         avg:                                  2.98ms

На что смотреть: transactions per second (TPS) и latency (avg/95‑й процентиль). Чем выше TPS и меньше латентность — тем лучше.

Очистка (удаление тестовой таблицы):

sysbench --test=oltp --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword cleanup

Практические советы и частые ошибки (когда тесты дают некорректные результаты)

  • Кеширование: если тестовый файл меньше ОЗУ, система будет отдавать данные из памяти, а не с диска — результат будет ложным.
  • Запуск в виртуальной машине: гипервизор может влиять на IO и CPU; сравнивайте только одинаковые окружения.
  • Нагрузочные агенты: встроенные фоновые процессы (мониторинг, антивирус, резервное копирование) и I/O scheduler влияют на результат.
  • Сетевая задержка: при тестировании удалённой БД учитывайте влияние сети.

Когда sysbench «не подходит»: для низкоуровневого тестирования дисков с точными параметрами очередей лучше использовать fio; для PostgreSQL — pgbench.

Альтернативы и сопутствующие инструменты

  • fio — гибкий инструмент для тестирования дисков и очередей I/O.
  • fioctl/bonnie++ — старые утилиты для файлового бенчмарка.
  • pgbench — для PostgreSQL.

Чек‑лист по ролям

Инженер (оператор):

  • Установить и зафиксировать версию sysbench.
  • Отключить ненужные сервисы на время теста.
  • Запустить тесты по методике и сохранить логи.

Разработчик (backend):

  • Подготовить рабочие данные и типовые сценарии нагрузки.
  • Интерпретировать TPS и латентность в контексте приложения.
  • Предложить оптимизации (индексы, настройки соединения).

Критерии приёмки

  • CPU: среднее время выполнения операции снижено на X% относительно baseline (зафиксируйте baseline заранее).
  • IO: пропускная способность соответствует SLA класса диска (HDD/SSD).
  • MySQL: TPS и p95 латентность укладываются в целевые значения приложения.

Примечание: конкретные числа зависят от приложений и оборудования; определяйте SLA для вашего сервиса.

Шпаргалка команд (чек‑команды)

  • Установка (Debian): sudo apt-get install sysbench
  • CPU: sysbench –test=cpu –cpu-max-prime=20000 run
  • IO подготовка: sysbench –test=fileio –file-total-size=150G prepare
  • IO запуск: sysbench –test=fileio –file-total-size=150G –file-test-mode=rndrw –init-rng=on –max-time=300 –max-requests=0 run
  • IO очистка: sysbench –test=fileio –file-total-size=150G cleanup
  • MySQL подготовка: sysbench –test=oltp –oltp-table-size=1000000 –db-driver=mysql –mysql-db=test –mysql-user=root –mysql-password=PASSWORD prepare
  • MySQL запуск: sysbench –test=oltp –oltp-table-size=1000000 –db-driver=mysql –mysql-db=test –mysql-user=root –mysql-password=PASSWORD –max-time=60 –oltp-read-only=on –max-requests=0 –num-threads=8 run
  • MySQL очистка: sysbench –test=oltp –db-driver=mysql –mysql-db=test –mysql-user=root –mysql-password=PASSWORD cleanup

Факто‑блок: что фиксировать в отчёте

  • Дата и время теста.
  • Версия sysbench и ОС.
  • Аппаратная конфигурация (CPU, RAM, диск).
  • Команды запуска и параметры.
  • Средние значения и 95‑й процентиль.

Итог

sysbench — удобный инструмент для быстрого выяснения узких мест CPU, IO и MySQL. Он не заменит глубокой диагностики, но даёт репрезентативную картину при правильной методике. Всегда фиксируйте окружение, повторяйте тесты и сравнивайте результаты только между сопоставимыми системами.

Ссылки

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро