Как тестировать производительность сервера с помощью 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 sysbenchCPU: пример бенчмарка
Команда для простого 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. Он не заменит глубокой диагностики, но даёт репрезентативную картину при правильной методике. Всегда фиксируйте окружение, повторяйте тесты и сравнивайте результаты только между сопоставимыми системами.
Ссылки
- sysbench: http://sysbench.sourceforge.net/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента