в деле), отдельно прокся-балансировщик.
Обновили 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 ГБ, кроме этого что-то можно придумать? Какую-то очередь больших запросов сделать?
Первое конечно полная жесть. Вы результаты-то запросов смотрели? Они вообще что-то отдаленное похожее на правду возвращают? Я бы даунгрейдился в моментально. По второму, какое реальное потребление? Что top/htop показывают?
Про первый пункт, я понимаю что это вещи абсолютно не связные. Но тем не менее результат запроса очень похож на правду. Очень печально, что пришлось отключить 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 как и было ранее, может решить проблему?
а сколько ОЗУ? Т.е. КХ неправильно меряет или правильно?
Обсуждают сегодня