Содержание

(этап 6) Вариант сценария проведения нагрузочного тестирования.

Нагрузочное тестирование предназначено для проверки того, как cистема будет работать под большим количеством пользователей, одновременно, в течение ограниченного периода времени, чтобы смоделировать реальную ситуацию.
Количество моделируемых пользователей аналогично ожидаемому объему нагрузки пользователей в реальной жизни.
Проверяется время отклика Системы, обнаруживаются узкие места и различные ошибки, например такие, как проблемы с кодом и утечки памяти.
Тестирование позволяет определить какое количество пользователей может обработать Система, прежде чем производительность пострадает.
TPC-B , TPC-C (OLTP-систем (онлайн-транзакционная обработка))
* эталонный тест, используется для стресс-тестирования пиковой пропускной способности базы данных, имитирует рабочую нагрузку, состоящую из нескольких пользовательских сеансов, подключенных по сети, со значительной активностью дискового ввода-вывода, за исключением любых сетевых и интерактивных операций, чтобы обеспечить наилучшее измерение пропускной способности;
TPC-H (OLAP-систем (онлайн-аналитическая обработка))
* эталонный тест, эмулирующий работу приложений бизнес-аналитики, состоит из набора бизнес-ориентированных специальных запросов и одновременных модификаций данных, анализирует большие объемы данных, выполняют запросы высокой степени сложности.

https://github.com/pingcap/go-tpc

https://www.hammerdb.com/download.html https://www.hammerdb.com/document.html

Пример использования pgbench.

su - postgres ## логинимся под УЗ postgres

pgbench –help ## посмотреть доп параметры утилиты

Создаем пустую БД для тестирования

psql -c "create database tesdb2;"

Размер БД может быть изменен согласно запросу Заказчика до необходимого значения, например 1 ТБ.
Наполняем данными 1 гб (по требованию заказчика)
-i – опция инициализации; запуск команды с этой опцией создаст необходимые таблицы и загрузит тестовыми данными базу данных.
-s 68 – параметр scale factor, определяет объём данных.
100 000 ? 68 = 6 800 000 строк.

pgbench -h localhost -d tesdb2 -U postgres -i -s 68

Проверяем размер создавшейся БД Можно посмотреть результат в Платформе Tantor.

psql -c "\l+ tesdb2"

Выполняем эмуляцию нагрузки

pgbench -h localhost -p 5432 -c 90 -j 2 -t 100 tesdb2 ## 90 пользователей, 2 потока, 100 транзакций у каждого пользователя
pgbench -c 90 -j 25 -P 60 -T 200 tesdb2               ## нагрузить чтение/запись 25 потоков
pgbench -n -c 90 -j 25 -T 200 tesdb2 -b select-only   ## нагрузить только чтение

-c — количество конкурентных подключений -P — вывод информации каждые * сек -T — длительность теста в сек -j — число потоков -n — не запускать VACUUM перед тестом.

TPS - могут варьироваться в зависимости от конфигурации системы, но для большинства приложений значение от 100 до 1000 TPS считается приемлемым. Для высоконагруженных систем это значение может быть значительно выше.

Latency - Низкие значения задержки (например, менее 10 мс) обычно считаются хорошими. Если задержка превышает 100 мс, это может указывать на проблемы с производительностью.

Пример использования sysbench.

Установка

sudo apt install sysbench
sysbench --help

Создание тестовой БД

sudo -iu postgres createdb testdb2

Инициализация данных в СУБД через локальное соединение:

sysbench oltp_common --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=testdb2 --tables=10 --table-size=100000 prepare

Проведение теста: Сценарии oltp_read_write, oltp_read_only, oltp_update_non_index, и т.п. –threads – число параллельных потоков (клиентов).
–time – общее время теста в секундах.

sysbench oltp_read_write --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=testdb2 --tables=10 --table-size=100000 --threads=10 --time=300 run

Очистка:

sysbench oltp_common --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=testdb2 --tables=10 --table-size=100000 cleanup

Пример использования go-tpc.

Установка https://github.com/pingcap/go-tpc Подготовка БД для модели аналитических запросов

go-tpc tpch prepare -d postgres -U postgres -p 'postgres' -D benchmarkh -H 10.2.0.11 -P 5432 --conn-params sslmode=disable

Запуск эмуляции аналитического запроса

go-tpc tpch run -d postgres -U postgres -p 'postgres' -D benchmarkh -H 10.2.0.11 -P 5432 --conn-params sslmode=disable