и max_bytes_before_external_sort выставлены по 21ГБ. Запускаю в параллель два запроса: 1. агрегация большой таблицы с последующим инсертом; 2. сортировка большой таблицы. Через некоторое время оба этих запроса падают по Memory limit (for user) exceeded (если запустить три сортировки из 2 запроса одновременно, то они отрабатывают нормально). Как я понимаю, происходит следующее: 2 запрос занимает положенные ему <=21ГБ, а 1 запрос занимает слишком много оперативки для чтения данных (например, 50ГБ), отчего оба запроса падают.
Вопрос: есть ли какой-то параметр, которым можно ограничить максимально занимаемое в оперативке место на чтение? Например, загрузились блоки на 20ГБ и пока они не обработаются, новые блоки в оперативку подгружаться не будут.
max_threads =5
Нет, это не помогает. Я обнаружил, что у меня эти запросы в принципе не могут одновременно пролезть в оперативку (условно, для юзера доступно только 17ГБ, а оба запроса вместе жрут 20ГБ). Есть ли какой-то способ, как можно запросами мониторить, сколько и на что юзер потребляет оперативки? Нашел в Яндекс.Облаке вот такой дашборд, но хотелось бы посмотреть на потребление оперативки в разрезе юзеров, чтобы как-нибудь жонглировать квотами на юзеров/запросы/кэширование и т.д.
готового нет. только select ... from system.processes group by user
select ... from system.processes показывает только потребление памяти запросами, а она еще расходуется на всякие кеши, хранение ключей и т.д. Вообще, хотелось бы полный список видеть, на что и сколько уходит оперативка, чтобы высчитывать, сколько ее осталось свободной на новый запрос... Но этого я нигде не нашел
SELECT * FROM asynchronous_metrics WHERE metric LIKE '%MemoryVirtual%' -- доступно select * from metrics where metric like 'MemoryTracking' -- использовано
старый у вас КХ, это с 20.9 наверное
так таблица не та
Спасибо, на кое-какие мысли меня это навело!) Правда, насколько я понимаю, SELECT * FROM asynchronous_metrics WHERE metric LIKE '%MemoryVirtual%' — это про доступное место на диске для хранение, а не про оперативку
нет, это про виртуальную память https://en.wikipedia.org/wiki/Virtual_memory
разве? А у вас своп есть? MemoryVirtual │ 55 092 850 688 MemoryDataAndStack │ 54 464 454 656 Filesystem Size Used Avail Use% Mounted on /dev/md0 938G 236G 655G 27% / free -h total used free shared buff/cache available Mem: 62Gi 30Gi 22Gi 164Mi 9.6Gi 31Gi Swap: 63Gi 3.2Gi 60Gi less /var/log/clickhouse-server/clickhouse-server.log ... Application: Setting max_server_memory_usage was set to 56.53 GiB (62.81 GiB available * 0.90 max_server_memory_usage_to_ram_ratio)
Обсуждают сегодня