Нагружает топики YDB, используя их в качестве очередей сообщений. Для имитации реальной нагрузки вы можете изменять различные входные параметры: число сообщений, размер сообщений, целевую скорость записи, число читателей и писателей.
В процессе работы на консоль выдаются результаты, которые включают количество записанных сообщений, скорость записи сообщений и пр.
Перед запуском нагрузки ее необходимо инициализировать. При инициализации будет создан топик workload-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 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.
Чтобы записать в 100 потоков писателей с целевой скоростью 80 МБ/с в течение 10 секунд, выполните следующую команду:
Посмотреть описание команды для запуска нагрузки на чтение:
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 потоков, выполните следующую команду:
В процессе работы будет выводиться статистика по промежуточным временным окнам, а по окончании теста — итоговая статистика за все время работы:
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...]
Посмотреть описание команды для запуска нагрузки на чтение и запись:
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.
Пример команды чтения с помощью 2 читателей в 50 потоков и записи 100 потоков писателей с целевой скоростью 80 МБ/с и длительностью 10 секунд:
ydb --profile quickstart workload topic run full --producer-threads 100 --consumers 2 --consumer-threads 50 --byte-rate 80M
В процессе работы будет выводиться статистика по промежуточным временным окнам, а по окончании теста — итоговая статистика за все время работы: