Transfer нагрузка

Запускает нагрузку в виде транзакций YDB, в которых участвуют топик и таблица. Данные вычитываются из топика и записываются в таблицу. Для имитации реальной нагрузки можно задавать различные входные параметры: число сообщений, размер сообщений, целевую скорость записи, число читателей и писателей, число партиций. В процессе работы на консоль выводятся результаты: количество записанных сообщений, скорость записи сообщений и т.д.

Примечание

В примерах используется профиль quickstart, подробнее смотрите в Создание профиля для соединения с тестовой БД.

Инициализация тестового окружения

Перед запуском нагрузки необходимо инициализировать тестовое окружение. Для этого можно использовать команду ydb workload transfer topic-to-table init. Она создаст топик и таблицу с нужными параметрами.

Общий вид команды:

ydb [global options...] workload transfer topic-to-table init [options...]

Посмотреть описание команды:

ydb workload transfer topic-to-table init --help

Параметры подкоманды:

Имя параметра Описание параметра Значение по умолчанию
--topic Имя топика transfer-topic
--consumer-prefix Префикс имени читателей workload-consumer
--table Имя таблицы transfer-table
--consumers Количество читателей топика 1
--topic-partitions Количество партиций топика 128
--table-partitions Количество партиций таблицы 128

После выполнения подкоманды init будут созданы таблица, топик и читатели. Имена читателей создаются по правилу ${CONSUMER_PREFIX}-${INDEX}. Значение ${INDEX} — это целое число от 0 и до значения параметра --consumers минус 1.

Например, команда

ydb --profile quickstart workload transfer topic-to-table init --consumers 2 --topic-partitions 143 --table-partitions 237

создаст топик transfer-topic с 2 читателями и 143 партициями и таблицу transfer-table с 237 партициями. Имена читателей workload-consumer-0 и workload-consumer-1.

Запуск нагрузочного теста

Тест моделирует нагрузку от приложения, которое получает сообщения из топика, обрабатывает их и записывает результаты обработки в таблицу БД.

Во время работы программы имитируются рабочие потоки двух видов:

  • Входной поток: в топик пишутся сообщения в режиме без транзакций. Пользователь может управлять скоростью записи, размером сообщений, количеством писателей.
  • Поток обработки: из топика читаются сообщения и записываются в таблицу с использованием транзакций YDB.

В рамках одной транзакции в потоке обработки выполняются следующие действия:

  • пока не истёк период --commit-period, читаются сообщения из топика;
  • по истечении периода, выполняется одна команда UPSERT над таблицей и команда COMMIT для фиксации транзакции.

Общий вид команды:

ydb [global options...] workload transfer topic-to-table run [options...]

Посмотреть описание команды:

ydb workload transfer topic-to-table run --help

Параметры подкоманды:

Имя параметра Описание параметра Значение по умолчанию
--seconds, -s Продолжительность теста в секундах 60
--window, -w Длительность окна сбора статистики в секундах 1
--quiet, -q Выводить только итоговый результат теста 0
--print-timestamp Печатать время вместе со статистикой каждого временного окна 0
--percentile Процентиль в выводе статистики 50
--warmup Время прогрева теста в секундах. В течение этого времени не вычисляется статистика, оно необходимо для устранения переходных процессов при старте 5
--topic Имя топика transfer-topic
--consumer-prefix Префикс имени читателей workload-consumer
--table Имя таблицы transfer-table
--producer-threads, -p Количество потоков писателей 1
--consumer-threads, -t Количество потоков читателей 1
--consumers, -c Количество читателей 1
--message-size, -m Размер сообщения в байтах. Возможно задание в КБ, МБ, ГБ путем добавления суффиксов K, M, G соответственно 10240
--message-rate Целевая суммарная скорость записи. В сообщениях в секунду. Исключает использование параметра --byte-rate 0
--byte-rate Целевая суммарная скорость записи. В байтах в секунду. Исключает использование параметра --message-rate. Возможно задание в КБ/с, МБ/с, ГБ/с путем добавления суффиксов K, M, G, соответственно 0
--commit-period Период между вызовами COMMIT. В секундах 10
--commit-messages Период между вызовами COMMIT. В количестве сообщений 1000000
--only-topic-in-tx В транзакциях принудительно участвуют только партиции топиков. Исключает использование параметра --only-table-in-tx 0
--only-table-in-tx В транзакциях принудительно участвуют только шарды таблиц. Исключает использование параметра --only-topic-in-tx 0

Например, команда

ydb --profile quickstart workload transfer topic-to-table run

запустит тест продолжительностью 60 секунд. Данные за первые 5 секунд не будут учитываться в статистике работы. Пример вывода на консоль

Window  Write speed     Write time      Inflight        Read speed      Topic time      Select time     Upsert time     Commit time
#       msg/s   MB/s    percentile,ms   percentile,msg  msg/s   MB/s    percentile,ms   percentile,ms   percentile,ms   percentile,ms
1       0       0       0               0               0       0       0               0               0               0
2       0       0       0               0               0       0       0               0               0               0
3       0       0       0               0               0       0       0               0               0               0
4       0       0       0               0               0       0       0               0               0               0
5       0       0       0               0               0       0       0               0               0               0
6       103     1       1023            83              103     1       1025            0               0               0
7       103     1       999             78              103     1       1001            0               0               0
8       103     1       1003            93              103     1       1002            0               0               0
9       103     1       1003            88              103     1       1003            0               0               0
10      103     1       999             79              103     1       999             0               0               0
11      103     1       1119            89              0       0       0               0               0               0
12      103     1       1023            90              206     2       1028            90              223             695
13      103     1       975             84              103     1       976             0               0               0
14      103     1       1003            91              103     1       1006            0               0               0
15      103     1       1003            93              103     1       1005            0               0               0
16      103     1       1103            89              103     1       1100            0               0               0
17      103     1       1063            89              103     1       1061            0               0               0
...
  • Window — порядковый номер временного окна сбора статистики.
  • Write speed — скорость записи сообщений писателями. В сообщениях в секунду и в мегабайтах в секунду.
  • Write time — процентиль времени записи сообщения в мс.
  • Inflight — максимальное число сообщений, ожидающих подтверждения по всем партициям.
  • Lag — максимальное число сообщений, ожидающих чтения, в окне сбора статистики. Учитываются сообщения по всем партициям.
  • Lag time — процентиль времени задержки сообщений в мс.
  • Read speed — скорость чтения сообщений читателями. В сообщениях в секунду и в мегабайтах в секунду.
  • Select time, Upsert time, Commit time — процентиль времени выполнения операций Select, Upsert, Commit в мс.

Удаление тестового окружения

После завершения теста можно удалить тестовое окружение.

Общий вид команды:

ydb [global options...] workload transfer topic-to-table clean [options...]

Посмотреть описание команды:

ydb workload transfer topic-to-table clean --help

Параметры подкоманды:

Имя параметра Описание параметра Значение по умолчанию
--topic Имя топика transfer-topic
--table Имя таблицы transfer-table

Например, команда

ydb --profile quickstart workload transfer topic-to-table clean

удалит топик transfer-topic, его читателей и таблицу transfer-table.

Предыдущая
Следующая