|
@@ -0,0 +1,150 @@
|
|
|
+# Transfer нагрузка
|
|
|
+
|
|
|
+Запускает нагрузку в виде транзакций {{ ydb-short-name }}, в которых участвуют топик и таблица. Данные вычитываются из топика и записываются в таблицу. Для имитации реальной нагрузки можно задавать различные входные параметры: число сообщений, размер сообщений, целевую скорость записи, число читателей и писателей, число партиций. В процессе работы на консоль выводятся результаты: количество записанных сообщений, скорость записи сообщений и т.д.
|
|
|
+
|
|
|
+{% include [ydb-cli-profile.md](../../_includes/ydb-cli-profile.md) %}
|
|
|
+
|
|
|
+## Инициализация тестового окружения {#init}
|
|
|
+
|
|
|
+Перед запуском нагрузки необходимо инициализировать тестовое окружение. Для этого можно использовать команду `{{ ydb-cli }} workload transfer topic-to-table init`. Она создаст топик и таблицу с нужными параметрами.
|
|
|
+
|
|
|
+Общий вид команды:
|
|
|
+```bash
|
|
|
+{{ ydb-cli }} [global options...] workload transfer topic-to-table init [options...]
|
|
|
+```
|
|
|
+* `global options` — [глобальные параметры](commands/global-options.md).
|
|
|
+* `options` - параметры подкоманды.
|
|
|
+
|
|
|
+Посмотреть описание команды:
|
|
|
+
|
|
|
+```bash
|
|
|
+{{ ydb-cli }} 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.
|
|
|
+
|
|
|
+Например, команда
|
|
|
+```bash
|
|
|
+{{ ydb-cli }} --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`.
|
|
|
+
|
|
|
+## Запуск нагрузочного теста {#run}
|
|
|
+
|
|
|
+Тест моделирует нагрузку от приложения, которое получает сообщения из топика, обрабатывает их и записывает результаты обработки в таблицу БД.
|
|
|
+
|
|
|
+Во время работы программы имитируются рабочие потоки двух видов:
|
|
|
+* Входной поток: в топик пишутся сообщения в режиме без транзакций. Пользователь может управлять скоростью записи, размером сообщений, количеством писателей.
|
|
|
+* Поток обработки: из топика читаются сообщения и записываются в таблицу с использованием транзакций {{ ydb-short-name }}.
|
|
|
+
|
|
|
+В рамках одной транзакции в потоке обработки выполняются следующие действия:
|
|
|
+* пока не истёк период `--commit-period`, читаются сообщения из топика;
|
|
|
+* по истечении периода, выполняется одна команда `UPSERT` над таблицей и команда `COMMIT` для фиксации транзакции.
|
|
|
+
|
|
|
+Общий вид команды:
|
|
|
+```bash
|
|
|
+{{ ydb-cli }} [global options...] workload transfer topic-to-table run [options...]
|
|
|
+```
|
|
|
+* `global options` — [глобальные параметры](commands/global-options.md).
|
|
|
+* `options` - параметры подкоманды.
|
|
|
+
|
|
|
+Посмотреть описание команды:
|
|
|
+
|
|
|
+```bash
|
|
|
+{{ ydb-cli }} 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`
|
|
|
+
|
|
|
+Например, команда
|
|
|
+```bash
|
|
|
+{{ ydb-cli }} --profile quickstart workload transfer topic-to-table run
|
|
|
+```
|
|
|
+запустит тест продолжительностью 60 секунд. Данные за первые 5 секунд не будут учитываться в статистике работы. Пример вывода на консоль
|
|
|
+
|
|
|
+```text
|
|
|
+Window Write speed Write time Inflight Lag Lag time Read speed Full time
|
|
|
+# msg/s MB/s percentile,ms percentile,msg percentile,msg percentile,ms msg/s MB/s percentile,ms
|
|
|
+1 0 0 0 0 0 0 0 0 0
|
|
|
+2 0 0 0 0 0 0 0 0 0
|
|
|
+3 0 0 0 0 0 0 0 0 0
|
|
|
+4 0 0 0 0 0 0 0 0 0
|
|
|
+5 0 0 0 0 0 0 0 0 0
|
|
|
+6 103 1 911 78 0 0 103 1 914
|
|
|
+7 103 1 983 78 0 0 103 1 984
|
|
|
+8 103 1 1103 80 0 0 103 1 1106
|
|
|
+9 103 1 1003 85 0 0 103 1 1004
|
|
|
+10 103 1 1003 86 0 0 103 1 1006
|
|
|
+11 103 1 1015 85 0 0 103 1 1019
|
|
|
+12 103 1 1047 91 0 0 103 1 1043
|
|
|
+13 103 1 999 88 0 0 103 1 1003
|
|
|
+14 103 1 1063 85 0 0 103 1 1064
|
|
|
+15 103 1 1003 89 0 0 103 1 1008
|
|
|
+16 103 1 999 88 0 0 103 1 1003
|
|
|
+17 103 1 1071 78 0 0 103 1 1077
|
|
|
+...
|
|
|
+```
|
|
|
+
|
|
|
+* `Window` — порядковый номер временного окна сбора статистики.
|
|
|
+* `Write speed` — скорость записи сообщений писателями. В сообщениях в секунду и в мегабайтах в секунду.
|
|
|
+* `Write time` — процентиль времени записи сообщения в мс.
|
|
|
+* `Inflight` — максимальное число сообщений, ожидающих подтверждения по всем партициям.
|
|
|
+* `Lag` — максимальное число сообщений, ожидающих чтения, в окне сбора статистики. Учитываются сообщения по всем партициям.
|
|
|
+* `Lag time` — процентиль времени задержки сообщений в мс.
|
|
|
+* `Read speed` — скорость чтения сообщений читателями. В сообщениях в секунду и в мегабайтах в секунду.
|
|
|
+* `Full time` — процентиль времени полной обработки сообщения, от записи писателем до чтения читателем в мс.
|
|
|
+
|
|
|
+## Удаление тестового окружения {#clean}
|
|
|
+
|
|
|
+После завершения теста можно удалить тестовое окружение.
|
|
|
+
|
|
|
+Общий вид команды:
|
|
|
+```bash
|
|
|
+{{ ydb-cli }} [global options...] workload transfer topic-to-table clean [options...]
|
|
|
+```
|
|
|
+* `global options` — [глобальные параметры](commands/global-options.md).
|
|
|
+* `options` - параметры подкоманды.
|
|
|
+
|
|
|
+```bash
|
|
|
+{{ ydb-cli }} workload transfer topic-to-table clean --help
|
|
|
+```
|
|
|
+
|
|
|
+Параметры подкоманды:
|
|
|
+Имя параметра | Описание параметра | Значение по умолчанию
|
|
|
+---|---|---
|
|
|
+`--topic` | Имя топика | `transfer-topic`
|
|
|
+`--table` | Имя таблицы | `transfer-table`
|
|
|
+
|
|
|
+Например, команда
|
|
|
+```bash
|
|
|
+{{ ydb-cli }} --profile quickstart workload transfer topic-to-table clean
|
|
|
+```
|
|
|
+удалит топик `transfer-topic`, его читателей и таблицу `transfer-table`
|