связку Kafka -> MV -> MT на 9 консьюмеров (по количеству партиций в топике) - получаю подозрительно низкую скорость вычитки порядка 11к записей в секунду. Уменьшаю (через пересоздание) в Kafka-таблице количество консьюмеров с 9 до 3 - скорость вычитки остаётся прежней, уменьшаю с 3 до 1 - скорость вычитки остаётся прежней!
Помнится, на 20.8 скорость росла практически пропорционально количеству консьюмеров.
В какую сторону копать? Что крутить?
Пробуйте пересоздать MV с kafka_num_consumers = 1, kafka_max_block_size = 500000 + https://altinity.com/blog/clickhouse-kafka-engine-faq
Увы, ничего не поменялось. Доку эту я читал, да и кафка движки раньше настраивал. Но либо я чего-то упускаю, либо в 21.11 оно иначе работать стало.
После обновления на 21.11 у нас стало медленнее консьмить. Помогло kafka_thread_per_consumer = 1 и увеличение background_message_broker_schedule_pool_size. Ещё смотреть stream_flush_interval_ms и размер блока на вставку
Может быть проблема с производительностью вставки? Данные в одну партицию летят? на ZK в io не уперлись? PS: на свежее пока не обновлялся
Увеличивать нужно кол-во консьмеров. Тестовым способом достиг максимальной производительности у себя при 9 консюмерах, при том что топик был с 6ю партициями
Про один тред на одного консьюмера думал, но не успел попробовать. Флаш тоже попробую, спасибо.
Там всего одна партиция, вставка пачками по 65-131к с общей скоростью 11к/сек, запас по выставке должен быть огромный. ЗК тоже в порядке, т.к. эта таблица даже не реплицируемая.
Так тут проблема как раз в том, что количество консьюмеров никак не влияет на скорость. Она составляет около 11к записей в секунду что для 1, что для 9 консьюмеров на топик из 9 партиций.
Если 1 партиция со стороны кафки, то больше 1 конзумера нет смысла, или меняйте кол-во партиций в кафке. Я имел в виду то, как партицирована таблица и как это соотносится с потоком данных, если в 1 батче из кафки запись в 100 партиций таблицы (PARTITION BY), то будет медленно.
Да, я понял ваш вопрос. В кафке 9 партиций, в таблице кх - одна партиция (т.е. все данные пишутся в одну партицию). И скорость вычитки не зависит от количества консьюмеров почему-то. Надо будет ещё попробовать в Null таблицу писать.
Обсуждают сегодня