query_log:
select
toTimeZone(ql.event_time, 'Europe/Moscow') as ts
, *
from
system.query_log ql
where
ql.event_date = today()
and hasAny(ql.databases, ['reindex', 'abc'])
and ql.query_kind = 'Select'
and ql.exception_code > 0
order by
ts desc
;
А он берёт и падает по памяти:
Code: 241. DB::Exception: Memory limit (total) exceeded: would use 279.10 GiB (attempt to allocate chunk of 4411030 bytes), maximum: 279.00 GiB: (while reading column Settings): (while reading from part /var/lib/clickhouse/data/system/query_log/20211213_220588_220988_126/ from mark 0 with max_rows_to_read = 5081): While executing MergeTreeThread. (MEMORY_LIMIT_EXCEEDED) (version 21.11.4.14 (official build))
Хотя, согласно тому же query_log (запросы к которому после этого снова стали нормально работать), упавший запрос потреблял 77мб, а обычно потребляет 50-250мб. В столбце Settings, на который он ругается, максимум 13 настроек суммарно на 436 символов.
Настройки для упавшего запроса такие:
{'connect_timeout_with_failover_ms':'1000','optimize_move_to_prewhere':'0','load_balancing':'random','distributed_aggregation_memory_efficient':'1','log_queries':'1','http_connection_timeout':'5','max_bytes_before_external_group_by':'1073741824','max_result_rows':'200','result_overflow_mode':'break','max_memory_usage':'214748364800','parallel_view_processing':'1'}
Куда он тут 280гб съел? Почему он мог в память упереться?
Так это же не этот запрос столько съел, у вас все запросы в системе в данный момент столько отожрали и не дали выполнится вашему
Memory limit (total) У вас все остальные запросы память сожрали https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-who-ate-my-memory/
Обсуждают сегодня