Transfer нагрузка
Запускает нагрузку в виде транзакций YDB, в которых участвуют топик и таблица. Данные вычитываются из топика и записываются в таблицу. Для имитации реальной нагрузки можно задавать различные входные параметры: число сообщений, размер сообщений, целевую скорость записи, число читателей и писателей, число партиций. В процессе работы на консоль выводятся результаты: количество записанных сообщений, скорость записи сообщений и т.д.
Примечание
В примерах используется профиль quickstart
, подробнее смотрите в Создание профиля для соединения с тестовой БД.
Инициализация тестового окружения
Перед запуском нагрузки необходимо инициализировать тестовое окружение. Для этого можно использовать команду ydb workload transfer topic-to-table init
. Она создаст топик и таблицу с нужными параметрами.
Общий вид команды:
ydb [global options...] workload transfer topic-to-table init [options...]
global options
— глобальные параметры.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...]
global options
— глобальные параметры.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...]
global options
— глобальные параметры.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
.