Topic нагрузка
Нагружает топики YDB, используя их в качестве очередей сообщений. Для имитации реальной нагрузки вы можете изменять различные входные параметры: число сообщений, размер сообщений, целевую скорость записи, число читателей и писателей.
В процессе работы на консоль выдаются результаты, которые включают количество записанных сообщений, скорость записи сообщений и пр.
Чтобы нагрузить топик:
- Инициализируйте нагрузку.
- Запустите один из доступных видов нагрузки:
Примечание
В примерах используется профиль quickstart
, подробнее смотрите в Создание профиля для соединения с тестовой БД.
Инициализация нагрузочного теста
Перед запуском нагрузки ее необходимо инициализировать. При инициализации будет создан топик workload-topic
с указанными параметрами. Инициализация выполняется следующей командой:
ydb [global options...] workload topic init [options...]
global options
— глобальные параметры.options
— параметры подкоманды.
Параметры подкоманды:
Имя параметра | Описание параметра |
---|---|
--topic |
Имя топика. Значение по умолчанию: workload-topic . |
--partitions , -p |
Количество партиций топика. Значение по умолчанию: 128 . |
--consumers , -c |
Количество читателей топика. Значение по умолчанию: 1 . |
--consumer-prefix |
Префикс имени читателей. Значение по умолчанию: workload-consumer .Например, если количество читателей --consumers равно 2 и префикс --consumer-prefix равен workload-consumer , то будут использованы следующие имена читателей: workload-consumer-0 , workload-consumer-1 . |
Чтобы создать топик с 256
партициями и 2
читателями, выполните команду:
ydb --profile quickstart workload topic init --partitions 256 --consumers 2
Нагрузка на запись
Этот вид нагрузки генерирует и записывает сообщения в топик в асинхронном режиме.
Общий вид команды для запуска нагрузки на запись:
ydb [global options...] workload topic run write [options...]
global options
— глобальные параметры.options
— параметры подкоманды.
Посмотреть описание команды для запуска нагрузки на запись:
ydb workload topic run write --help
Параметры подкоманды:
Имя параметра | Описание параметра |
---|---|
--seconds , -s |
Продолжительность теста в секундах. Значение по умолчанию: 60 . |
--window , -w |
Длительность окна сбора статистики в секундах. Значение по умолчанию: 1 . |
--quiet , -q |
Выводить только итоговый результат теста. |
--print-timestamp |
Печатать время вместе со статистикой каждого временного окна. |
--warmup |
Время прогрева теста в секундах. В течение этого времени не вычисляется статистика, оно необходимо для устранения переходных процессов при старте. Значение по умолчанию: 5 . |
--percentile |
Процентиль в выводе статистики. Значение по умолчанию: 50 . |
--topic |
Имя топика. Значение по умолчанию: workload-topic . |
--threads , -t |
Количество потоков писателя. Каждый поток будет писать во все партиции указанного топика. Значение по умолчанию: 1 . |
--message-size , -m |
Размер сообщения в байтах. Возможно задание в КБ, МБ, ГБ путем добавления суффиксов K , M , G соответственно.Значение по умолчанию: 10K . |
--message-rate |
Целевая суммарная скорость записи, сообщений в секунду. Исключает использование параметра --byte-rate .Значение по умолчанию: 0 (нет ограничения). |
--byte-rate |
Целевая суммарная скорость записи, байт в секунду. Исключает использование параметра --message-rate . Возможно задание в КБ/с, МБ/с, ГБ/с путем добавления суффиксов K ,M ,G соответственно.Значение по умолчанию: 0 (нет ограничения). |
--codec |
Кодек, используемый для сжатия сообщений на клиенте перед отправкой на сервер. Сжатие увеличивает затраты CPU на клиенте при записи и чтении сообщений, но обычно позволяет уменьшить объем передаваемых по сети и хранимых данных. При последующем чтении сообщений подписчиками они автоматически разжимаются использованным при записи кодеком, не требуя указания каких-либо параметров. Возможные значения: RAW - без сжатия (по умолчанию), GZIP , ZSTD . |
--use-tx |
Использовать транзакции при записи сообщений. По умолчанию транзакции использоваться не будут. |
--tx-commit-interval |
Интервал коммита транзакций в миллисекундах. Коммит транзакции произойдёт, когда выполнится одно из условий: пройдёт заданное в параметре --tx-commit-interval количество времени или будет получено заданное в параметре --tx-commit-messages количество сообщений.Значение по умолчанию: 1000 . |
--tx-commit-messages |
Количество сообщений, необходимое для коммита транзакции. Коммит транзакции произойдёт, когда выполнится одно из условий: пройдёт заданное в параметре --tx-commit-interval количество времени или будет получено заданное в параметре --tx-commit-messages количество сообщений.Значение по умолчанию: 1 000 000 . |
Чтобы записать в 100
потоков писателей с целевой скоростью 80
МБ/с в течение 10
секунд, выполните следующую команду:
ydb --profile quickstart workload topic run write --threads 100 --byte-rate 80M
В процессе работы будет выводиться статистика по промежуточным временным окнам, а по окончании теста — итоговая статистика за все время работы:
Window Write speed Write time Inflight
# msg/s MB/s percentile,ms percentile,msg
1 20 0 1079 72
2 8025 78 1415 78
3 7987 78 1431 79
4 7888 77 1471 101
5 8126 79 1815 116
6 7018 68 1447 79
7 8938 87 2511 159
8 7055 68 1463 78
9 7062 69 1455 79
10 9912 96 3679 250
Window Write speed Write time Inflight
# msg/s MB/s percentile,ms percentile,msg
Total 7203 70 3023 250
Window
— порядковый номер временного окна сбора статистики;Write speed
— скорость записи сообщений, сообщений в секунду и МБ/с;Write time
— процентиль времени записи сообщения, мс.Inflight
— максимальное число сообщений, ожидающих подтверждения по всем партициям.
Если в тесте используются транзакции, то дополнительно будет выведена статистика времени коммита транзакции в колонке Commit time
.
Нагрузка на чтение
Этот вид нагрузки асинхронно читает сообщения из топика. Чтобы в топике появились сообщения, перед началом чтения запустите нагрузку на запись.
Общий вид команды для запуска нагрузки на чтение:
ydb [global options...] workload topic run read [options...]
global options
— глобальные параметры.options
— параметры подкоманды.
Посмотреть описание команды для запуска нагрузки на чтение:
ydb workload topic run read --help
Параметры подкоманды:
Имя параметра | Описание параметра |
---|---|
--seconds , -s |
Продолжительность теста в секундах. Значение по умолчанию: 60 . |
--window , -w |
Длительность окна сбора статистики в секундах. Значение по умолчанию: 1 . |
--quiet , -q |
Выводить только итоговый результат теста. |
--print-timestamp |
Печатать время вместе со статистикой каждого временного окна. |
--warmup |
Время прогрева теста в секундах. В течение этого времени не вычисляется статистика, оно необходимо для устранения переходных процессов при старте. Значение по умолчанию: 5 . |
--percentile |
Процентиль в выводе статистики. Значение по умолчанию: 50 . |
--topic |
Имя топика. Значение по умолчанию: workload-topic . |
--consumers , -c |
Количество читателей. Значение по умолчанию: 1 . |
--consumer-prefix |
Префикс имени читателей. Значение по умолчанию: workload-consumer .Например, если количество читателей --consumers равно 2 и префикс --consumer-prefix равен workload-consumer , то будут использованы следующие имена читателей: workload-consumer-0 , workload-consumer-1 . |
--threads , -t |
Количество потоков читателя. Значение по умолчанию: 1 . |
Чтобы выполнить чтение из топика с помощью 2
читателей, каждый из который имеет 100
потоков, выполните следующую команду:
ydb --profile quickstart workload topic run read --consumers 2 --threads 100
В процессе работы будет выводиться статистика по промежуточным временным окнам, а по окончании теста — итоговая статистика за все время работы:
Window Lag Lag time Read speed Full time
# percentile,msg percentile,ms msg/s MB/s percentile,ms
1 0 0 0 0 0
2 30176 0 66578 650 0
3 30176 0 68999 674 0
4 30176 0 66907 653 0
5 27835 0 67628 661 0
6 30176 0 67938 664 0
7 30176 0 71628 700 0
8 20338 0 61367 599 0
9 30176 0 61770 603 0
10 30176 0 58291 569 0
Window Lag Lag time Read speed Full time
# percentile,msg percentile,ms msg/s MB/s percentile,ms
Total 30176 0 80267 784 0
Window
— порядковый номер временного окна сбора статистики.Lag
— максимальное в окне сбора статистики отставание читателя. Учитываются сообщения по всем партициям.Lag time
— процентиль времени задержки сообщений в мс.Read
— Скорость чтения сообщений читателем, сообщений в секунду и МБ/с.Full time
— процентиль времени полной обработки сообщения (от записи писателем до чтения читателем) в мс.
Нагрузка на чтение и запись
Этот вид нагрузки одновременно асинхронно пишет и читает сообщения. Выполнение данной команды эквивалентно одновременному запуску нагрузок на чтение и запись.
Общий вид команды для запуска нагрузки на чтение и запись:
ydb [global options...] workload topic run full [options...]
global options
— глобальные параметры.options
— параметры подкоманды.
Посмотреть описание команды для запуска нагрузки на чтение и запись:
ydb workload topic run full --help
Параметры подкоманды:
Имя параметра | Описание параметра |
---|---|
--seconds , -s |
Продолжительность теста в секундах. Значение по умолчанию: 60 . |
--window , -w |
Длительность окна сбора статистики в секундах. Значение по умолчанию: 1 . |
--quiet , -q |
Выводить только итоговый результат теста. |
--print-timestamp |
Печатать время вместе со статистикой каждого временного окна. |
--warmup |
Время прогрева теста в секундах. В течение этого времени не вычисляется статистика, оно необходимо для устранения переходных процессов при старте. Значение по умолчанию: 5 . |
--percentile |
Процентиль в выводе статистики. Значение по умолчанию: 50 . |
--topic |
Имя топика. Значение по умолчанию: workload-topic . |
--producer-threads , -p |
Количество потоков писателя. Значение по умолчанию: 1 . |
--message-size , -m |
Размер сообщения в байтах. Возможно задание в КБ, МБ, ГБ путем добавления суффиксов K , M , G соответственно.Значение по умолчанию: 10K . |
--message-rate |
Целевая суммарная скорость записи, сообщений в секунду. Исключает использование параметра --message-rate .Значение по умолчанию: 0 (нет ограничения). |
--byte-rate |
Целевая суммарная скорость записи, байт в секунду. Исключает использование параметра --byte-rate . Возможно задание в КБ/с, МБ/с, ГБ/с путем добавления суффиксов K ,M ,G соответственно.Значение по умолчанию: 0 (нет ограничения). |
--codec |
Кодек, используемый для сжатия сообщений на клиенте перед отправкой на сервер. Сжатие увеличивает затраты CPU на клиенте при записи и чтении сообщений, но обычно позволяет уменьшить объем передаваемых по сети и хранимых данных. При последующем чтении сообщений подписчиками они автоматически разжимаются использованным при записи кодеком, не требуя указания каких-либо параметров. Возможные значения: RAW - без сжатия (по умолчанию), GZIP , ZSTD . |
--consumers , -c |
Количество читателей. Значение по умолчанию: 1 . |
--consumer-prefix |
Префикс имени читателей. Значение по умолчанию: workload-consumer .Например, если количество читателей --consumers равно 2 и префикс --consumer-prefix равен workload-consumer , то будут использованы следующие имена читателей: workload-consumer-0 , workload-consumer-1 . |
--threads , -t |
Количество потоков читателя. Значение по умолчанию: 1 . |
--use-tx |
Использовать транзакции при записи сообщений. По умолчанию транзакции использоваться не будут. |
--tx-commit-interval |
Интервал коммита транзакций в миллисекундах. Коммит транзакции произойдёт, когда выполнится одно из условий: пройдёт заданное в параметре --tx-commit-interval количество времени или будет получено заданное в параметре --tx-commit-messages количество сообщений.Значение по умолчанию: 1000 . |
--tx-commit-messages |
Количество сообщений, необходимое для коммита транзакции. Коммит транзакции произойдёт, когда выполнится одно из условий: пройдёт заданное в параметре --tx-commit-interval количество времени или будет получено заданное в параметре --tx-commit-messages количество сообщений.Значение по умолчанию: 1 000 000 . |
Пример команды чтения с помощью 2
читателей в 50
потоков и записи 100
потоков писателей с целевой скоростью 80
МБ/с и длительностью 10
секунд:
ydb --profile quickstart workload topic run full --producer-threads 100 --consumers 2 --consumer-threads 50 --byte-rate 80M
В процессе работы будет выводиться статистика по промежуточным временным окнам, а по окончании теста — итоговая статистика за все время работы:
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 1091 10 2143 8 2076 20607 40156 392 30941
3 1552 15 2991 12 7224 21887 41040 401 31886
4 1733 16 3711 15 10036 22783 38488 376 32577
5 1900 18 4319 15 10668 23551 34784 340 33372
6 2793 27 5247 21 9461 24575 33267 325 34893
7 2904 28 6015 22 12150 25727 34423 336 35507
8 2191 21 5087 21 12150 26623 29393 287 36407
9 1952 19 2543 10 7627 27391 33284 325 37814
10 1992 19 2655 9 10104 28671 29101 284 38797
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
Total 1814 17 5247 22 12150 28671 44827 438 40252
Window
— порядковый номер временного окна сбора статистики.Write speed
— скорость записи сообщений, сообщений в секунду и МБ/с.Write time
— процентиль времени записи сообщения в мс.Inflight
— максимальное число сообщений, ожидающих подтверждения по всем партициям.Lag
— максимальное число сообщений, ожидающих чтения, в окне сбора статистики. Учитываются сообщения по всем партициям.Lag time
— процентиль времени задержки сообщений в мс.Read
— Скорость чтения сообщений читателем, сообщений в секунду и МБ/с.Full time
— процентиль времени полной обработки сообщения, от записи писателем до чтения читателем в мс.
Удаление топика
После завершения работы можно удалить тестовый топик. Общий вид команды для удаления топика:
ydb [global options...] workload topic clean [options...]
global options
— глобальные параметры.options
— параметры подкоманды.
Параметры подкоманды:
Имя параметра | Описание параметра |
---|---|
--topic |
Имя топика. Значение по умолчанию: workload-topic . |
Чтобы удалить тестовый топик workload-topic
, выполните следующую команду:
ydb --profile quickstart workload topic clean