Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
application:sysbench [2023/11/30 02:06] – создано 192.168.1.159application:sysbench [2024/01/27 03:39] (текущий) mirocow
Строка 1: Строка 1:
-{{tag>monioring benchmark}}+{{tag>monioring benchmark test mysql postgres}}
  
-====== Sysbench ======+====== Sysbench - Тестирование производительности ====== 
 + 
 +SysBench - это модульный, кроссплатформенный и многопоточный инструмент тестирования для оценки параметров операционной системы, которые важны для системы, работающей с базой данных под интенсивной нагрузкой. 
 + 
 +Идея этого набора тестов состоит в том, чтобы быстро получить представление о производительности системы без настройки сложных тестов базы данных или даже без установки базы данных вообще. 
 + 
 + 
 +^ Вариант Описание                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           || Значение по умолчанию  |   | 
 +| :::                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | :::                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   | 
 +|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ||                        |   | 
 +| --threads                                                   | Общее количество рабочих потоков, которые нужно создать                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 1                      |   | 
 +| --events                                                    | Ограничение на общее количество запросов. 0 (по умолчанию) означает отсутствие ограничений.                                                                                                                                                                                                                                                                                                                                                                                                                                   | 0                      |   | 
 +| --time                                                      | Ограничение общего времени выполнения в секундах. 0 означает отсутствие ограничений                                                                                                                                                                                                                                                                                                                                                                                                                                           | 10                       | 
 +| --warmup-time                                               | Выполнять события в течение этого количества секунд с отключенной статистикой до фактического запуска теста с включенной статистикой. Это полезно, если вы хотите исключить начальный период выполнения теста из статистики. Во многих тестах начальный период не является репрезентативным, поскольку процессору/базе данных/страницам и другим кэшам требуется некоторое время для прогрева.                                                                                                                                | 0                      |   | 
 +| --rate                                                      | Средняя скорость транзакций. Число указывает, сколько событий (транзакций) в секунду должно выполняться всеми потоками в среднем. 0 (по умолчанию) означает неограниченную скорость, т.е. события выполняются максимально быстро.                                                                                                                                                                                                                                                                                             | 0                      |   | 
 +| --thread-init-timeout                                       | Время ожидания в секундах для инициализации рабочих потоков                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 30                       | 
 +| --thread-stack-size                                         | Размер стека для каждого потока                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 32К                    |   | 
 +| --report-interval                                           | Периодически сообщать промежуточную статистику с заданным интервалом в секундах. Обратите внимание, что статистика, создаваемая этой опцией, является поинтервальной, а не кумулятивной. 0 отключает промежуточные отчеты                                                                                                                                                                                                                                                                                                     | 0                      |   | 
 +| --debug                                                     | Распечатать дополнительную информацию об отладке                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | выключенный            |   | 
 +| --validate                                                  | Провести проверку результатов испытаний, где это возможно.                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | выключенный            |   | 
 +|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   | 
 +| **Log параметры (параметры журнала)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ||                        |   | 
 +| --help                                                      | Распечатать справку по общему синтаксису или по указанному тесту и выйти.                                                                                                                                                                                                                                                                                                                                                                                                                                                     | выключенный            |   | 
 +| --verbosity                                                 | Уровень детализации (0 — только критические сообщения, 5 — отладка)                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 4                      |   | 
 +| --percentile                                                | sysbench измеряет время выполнения всех обработанных запросов для отображения статистической информации, такой как минимальное, среднее и максимальное время выполнения. Для большинства тестов также полезно знать значение времени выполнения запроса, соответствующее некоторому процентилю (например, процентиль 95% означает, что мы должны отбросить 5% самых длинных запросов и выбрать максимальное значение из оставшихся). Эта опция позволяет указать процентильный ранг времени выполнения запроса для подсчета.  | 95                       | 
 +| --luajit-cmd                                                | выполнить команду управления LuaJIT. Эта опция эквивалентна luajit -j. Дополнительную информацию см. в документации LuaJIT.                                                                                                                                                                                                                                                                                                                                                                                                                          |   | 
 +|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   | 
 +| **General Database Options (общие параметры базы данных)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ||                        |   | 
 +| -db-driven                                                  | String #Specify Driver Database Driver, по умолчанию MySQL, который можно установить в PGSQL (PostgreSQL)                                                                                                                                                                                                                                                                                                                                                                                                                                            |   | 
 +| -db-ps-mode                                                 | String #ps Режим, есть два типа: {Auto, Disable}, Auto по умолчанию                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   | 
 +| -db-debug                                                   | [= on, off] #print информация отладки конкретной базы данных, по умолчанию с закрытой                                                                                                                                                                                                                                                                                                                                                                                                                                                                |   | 
 +|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   | 
 +| **Mysql options**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |   | 
 +|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   | 
 +==== Примеры ==== 
 + 
 +<code bash> 
 +$ sysbench /usr/share/sysbench/oltp_read_write.lua --threads=10 --events=100000000 --time=300 --mysql-host=10.1.71.41 --mysql-db=sbtest --mysql-user=sbtest --mysql-password=sbtest_pass --mysql-port=3307 --tables=100 --table-size=1000000 --range_selects=off --db-ps-mode=disable --report-interval=1 cleanup 
 +</code> 
 + 
 +<code bash> 
 +$ sysbench /usr/share/sysbench/oltp_read_write.lua --threads=10 --events=100000000 --mysql-host=10.1.71.41 --mysql-db=sbtest --mysql-user=sbtest --mysql-password=sbtest_pass --mysql-port=3307 --tables=100 --table-size=10000000 prepare 
 +</code> 
 + 
 +<code bash> 
 +$ sysbench /usr/share/sysbench/oltp_read_write.lua --threads=10 --events=100000000 --time=300 --mysql-host=10.1.71.41 --mysql-db=sbtest --mysql-user=sbtest --mysql-password=sbtest_pass --mysql-port=3307 --tables=100 --delete_inserts=10 --index_updates=10 --non_index_updates=10 --table-size=10000000 --db-ps-mode=disable --report-interval=1 run 
 +</code>
  
 === Проверяем производительность CPU === === Проверяем производительность CPU ===
  
 +Выполнение теста:
 <code bash> <code bash>
 $ sysbench --test=cpu --cpu-max-prime=20000 run $ sysbench --test=cpu --cpu-max-prime=20000 run
 </code> </code>
 +
 +=== Тестируем дисковую подсистему ===
 +
 +Подготовка тестовых файлов:
 +<code bash>
 +$ sysbench --test=fileio --file-total-size=70G prepare
 +</code>
 +
 +Выполнение теста:
 +<code bash>
 +$ sysbench --test=fileio --file-total-size=70G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
 +</code>
 +
 +Очистка временных файлов:
 +<code bash>
 +$ sysbench --test=fileio cleanup
 +</code>
 +
 +=== Тест MySQL OLTP ===
 +
 +Подготовка к тестированию:
 +<code bash>
 +$ sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=pass prepare
 +</code>
 +
 +Запуск теста:
 +<code bash>
 +$ sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=pass --max-time=60 --oltp-read-only=off --max-requests=0 --num-threads=8 run
 +</code>
 +
 +Очистка:
 +<code bash>
 +$ sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=pass cleanup
 +</code>
 +
 +=== Тест MySQL oltp_read_write ===
 +
 +Подготовка к тестированию:
 +<code bash>
 +$ sysbench /usr/share/sysbench/oltp_read_write.lua --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=pass prepare
 +</code>
 +
 +Запуск теста:
 +<code bash>
 +$ sysbench /usr/share/sysbench/oltp_read_write.lua --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=pass --max-time=60 --oltp-read-only=off --max-requests=0 --num-threads=8 run
 +</code>
 +
 +Очистка:
 +<code bash>
 +$ sysbench /usr/share/sysbench/oltp_read_write.lua --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=pass cleanup
 +</code>
 +
 +=== Как измерить производительность PostgreSQL? ===
 +
 +<code sql>
 +BEGIN;
 +UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
 +SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
 +UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
 +UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
 +INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
 +END;
 +</code>
 +
 +Для создания тестовых данных выполняем команду:
 +<code bash>
 +$ pgbench -h localhost -U test_user -i -s 100 test
 +</code>
 +
 +Выполняем тестирование:
 +<code bash>
 +$ pgbench -h localhost -U test_user -t 5000 -c 4 -j 4 test
 +</code>
 +
 +=== А как же производительность PHP? ===
 +
 +[[https://github.com/florinsky/af-php-bench|PHP Benchmark tool]]
 +
 +Для запуска:
 +<code bash>
 +$ wget https://github.com/florinsky/af-php-bench/raw/master/build/phpbm.phar
 +$ php phpbm.phar
 +</code>
 +
 +===== Документация / Ссылки =====
 +
 +  * https://github.com/akopytov/sysbench
 +  * https://severalnines.com/blog/how-benchmark-performance-mysql-mariadb-using-sysbench/
 +  * https://habr.com/ru/companies/simbirsoft/articles/271485/
 +  * https://github.com/florinsky/af-php-bench/tree/master