Нагрузочное тестирование предназначено для проверки того, как 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
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 мс, это может указывать на проблемы с производительностью.
Установка
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
Установка 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