184 похожих чатов

Добрый день. Есть кластер из 12 нод, на всех реплики (отказаустойчивость

в деле), отдельно прокся-балансировщик.
Обновили CH с версии 20.3.8.53 --> 21.1.7.1
Начали падать часть запросов с global join (не находило поля из правой таблицы)
Методом тыка выставили optimize_skip_unused_shards = 0 (было 1) и заработало. Но теперь другая проблема, некоторые запросы падают по памяти. Почитали, в 20.3.8 была настройка max_memory_usage_for_all_queries = 34 Gb, сейчас её заменили на max_server_memory_usage через max_server_memory_usage_to_ram_ratio, выставили чтоб на выходе было чуть более предыдущих 34 Gb и всё равно на случайных нодах запрос упирается в этот предел. Так понимаю, что на некоторые нодах прилетает несколько больших запросов, которые не пролезают по памяти и что не пролезает - падает. (would use 35.41 GiB (attempt to allocate chunk of 1073741824 bytes)). Соответственно вопрос, как можно решить проблемы кроме как увеличивать тотал используемой ОЗУ? Стоит лимит на один запрос 10 ГБ, кроме этого что-то можно придумать? Какую-то очередь больших запросов сделать?

3 ответов

10 просмотров

Первое конечно полная жесть. Вы результаты-то запросов смотрели? Они вообще что-то отдаленное похожее на правду возвращают? Я бы даунгрейдился в моментально. По второму, какое реальное потребление? Что top/htop показывают?

Alex-Moran Автор вопроса
Denny [Altinity]
Первое конечно полная жесть. Вы результаты-то запр...

Про первый пункт, я понимаю что это вещи абсолютно не связные. Но тем не менее результат запроса очень похож на правду. Очень печально, что пришлось отключить optimize_skip_unused_shards, так как распределение по нодам было не rand(), а даже осмысленное и нагрузку здорово могло снизить. Тем более, что постоянных однотипных запросов хватает. Про второй пункт, очень тяжело отловить ошибку, так как даже одновременное открытие 12 htop'ов не даёт 100% гарантии визуально поймать момент. Да память жрёт) В основном clickhouse_server. Тогда переформулирую вопрос, если в момент запроса, под клик максимально может быть выделено не 35.41 GB, то как раз таки и будут появляться такие ошибки would use 35.41 GiB (attempt to allocate chunk of 1073741824 bytes) Allocator: Cannot mmap 2.00 GiB., errno: 12, strerror: Cannot allocate memory: while executing 'ARRAY JOIN ..... Поэтому банальное снижение до 34GB как и было ранее, может решить проблему?

Alex Moran
Про первый пункт, я понимаю что это вещи абсолютно...

а сколько ОЗУ? Т.е. КХ неправильно меряет или правильно?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта