Sysbench — утилита для тестирования производительности MySQL (и других СУБД), а также параметров операционной системы. Подобный инструмент незаменим для предварительного тестирования эффективности системы с (потенциально) высокой нагрузкой. Sysbench позволяет оценить производительность сервера СУБД и операционной системы в различных условиях при различной нагрузке.
Из преимуществ этого продукта следует отметить его простоту, гибкость, а также:
Другими словами эта утилита нужна для решения следующих задач:
Эта популярная утилита присутствует в пакетах многих дистрибутивов, поэтому:
sudo apt-get install sysbench
Или собираем из исходников:
./configure make make install
После этого утилита готова к работе.
Синтаксис вызова утилиты:
sysbench --test=имя-теста [опции] команда
Команды, которые можно использовать в тестах:
Параметр --test
задает имя теста, который следует выполнять. Sysbench включает в себя несколько тестов:
Этот тест проверит производительность процессоров, используя вычисления с 64-разрядными числами. Например:
sysbench --test=cpu --cpu-max-prime=20000 run
Этот тест служит для измерения производительности последовательных операций чтения/записи в оперативную память.
Этот тест используется для симуляции разнообразной нагрузки на файловую подсистему. При подготовке теста создается определенное количество файлов (указанного размера). Затем, при выполнении теста, над этими файлами происходят операции чтения/записи в несколько потоков.
sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw prepare sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw run sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw cleanup
Служит для проверки работы в условиях большого количества конкурирующих потоков. Тест заключается в создании нескольких потоков и нескольких мутексов. Далее каждый поток начинает генерировать запросы, которые блокируют мутекс, исполняют процессорные задачи (для симуляции реальной работы) и разблокируют мутекс.
sysbench --num-threads=64 --test=threads --thread-yields=100 --thread-locks=2 run
Этот тест служит для оценки производительности СУБД, о нем подробнее дальше:
Этот тест проводится в несколько этапов. На этапе prepare создается тестовая таблица и заполняется данными (в указанных количествах). Например:
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=10000 --mysql-user=root --mysql-password=root --db-driver=mysql --test=oltp prepare
Эта операция создаст innoDB таблицу на 10000 записей. По умолчанию таблица создается в базе данных sbtest (не забудьте создать эту БД либо указать другую).
Далее выполняются тесты:
sysbench --num-threads=8 --max-requests=500 --oltp-table-size=10000 --mysql-user=root --mysql-password=root --db-driver=mysql --test=oltp run
Эта команда выполнит тест с 8 клиентами (максимальное количество запросов — 500) на таблице, которая была создана на предыдущем этапе. После окончания теста не забудьте выполнить команду cleanup. После выполнения Вы увидите подробные результаты тестирования. Далее — живой пример.
Посмотрим на производительность innoDB таблицы с разными значениями конфигурационных параметров (проведем эксперимент со сбросом лога). Для начала подготовим innoDB таблицу (50 тыс. записей):
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=50000 --mysql-user=root --mysql-password=root --db-driver=mysql --test=oltp prepare
Включим сброс лога на диск после каждой транзакции (используем стандартный метод сброса лога):
innodb_flush_log_at_trx_commit = 1 innodb_flush_method=fdatasync
Выполним тест:
sysbench --num-threads=8 --max-requests=1000 --oltp-table-size=50000 --mysql-user=root --mysql-password=root --db-driver=mysql --test=oltp run
И увидим следующие результаты:
OLTP test statistics: queries performed: read: 14000 write: 5000 other: 2000 total: 21000 transactions: 1000 (263.49 per sec.) deadlocks: 0 (0.00 per sec.) read/write requests: 19000 (5006.24 per sec.) other operations: 2000 (526.97 per sec.) Test execution summary: total time: 3.7953s total number of events: 1000 total time taken by event execution: 30.2361 per-request statistics: min: 4.80ms avg: 30.24ms max: 53.01ms approx. 95 percentile: 33.07ms Threads fairness: events (avg/stddev): 125.0000/0.00 execution time (avg/stddev): 3.7795/0.01
Заметьте, что пропускная способность операций чтения/записи около 5 тыс в секунду. Теперь изменим параметры сброса лога:
innodb_flush_log_at_trx_commit = 0 innodb_flush_method=O_DIRECT
и проверим результаты:
OLTP test statistics: queries performed: read: 14000 write: 5000 other: 2000 total: 21000 transactions: 1000 (485.37 per sec.) deadlocks: 0 (0.00 per sec.) read/write requests: 19000 (9222.00 per sec.) other operations: 2000 (970.74 per sec.) Test execution summary: total time: 2.0603s total number of events: 1000 total time taken by event execution: 16.4255 per-request statistics: min: 2.69ms avg: 16.43ms max: 235.49ms approx. 95 percentile: 42.15ms Threads fairness: events (avg/stddev): 125.0000/6.16 execution time (avg/stddev): 2.0532/0.00
Убеждаемся, что во втором случае пропускная способность СУБД вдвое выше, чем в первом (о параметрах подробнее в статье Оптимальная настройка Mysql сервера).
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…