===== (этап 6) Вариант сценария проведения нагрузочного тестирования. =====
> Нагрузочное тестирование предназначено для проверки того, как cистема будет работать под большим количеством пользователей, одновременно, в течение ограниченного периода времени, чтобы смоделировать реальную ситуацию.
> Количество моделируемых пользователей аналогично ожидаемому объему нагрузки пользователей в реальной жизни.
> Проверяется время отклика Системы, обнаруживаются узкие места и различные ошибки, например такие, как проблемы с кодом и утечки памяти.
> Тестирование позволяет определить какое количество пользователей может обработать Система, прежде чем производительность пострадает.
> TPC-B , TPC-C (OLTP-систем (онлайн-транзакционная обработка))
> * эталонный тест, используется для стресс-тестирования пиковой пропускной способности базы данных, имитирует рабочую нагрузку, состоящую из нескольких пользовательских сеансов, подключенных по сети, со значительной активностью дискового ввода-вывода, за исключением любых сетевых и интерактивных операций, чтобы обеспечить наилучшее измерение пропускной способности;
> TPC-H (OLAP-систем (онлайн-аналитическая обработка))
> * эталонный тест, эмулирующий работу приложений бизнес-аналитики, состоит из набора бизнес-ориентированных специальных запросов и одновременных модификаций данных, анализирует большие объемы данных, выполняют запросы высокой степени сложности.
* pgbench -- программа для запуска эталонных тестов на PostgreSQL, выполняет последовательность команд SQL, вычисляет среднюю скорость транзакций (транзакций в секунду), использует сценарий, основанный на TPC-B, включающий пять команд SELECT, UPDATE и INSERTна транзакцию, также ПО позволяет протестировать собственный сценарий транзакций;
* go-tpc -- набор инструментов тестирования рабочих нагрузок на основе тестов TPC для СУБД PostgreSQL, выполняющий тест TPC-H. \\
[[https://github.com/pingcap/go-tpc]]
* sysbench -- это универсальный инструмент для стресс-тестирования
* HammerDB -- поддерживающее TPC-C, TPC-H и другие сценарии. для само изучения более профессиональный инструмент \\
[[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