млн. строк. После обработки какого-то объема ~600 млн. запрос выдает ошибку "Code: 32. DB::Exception: Attempt to read after eof: while receiving packet from localhost:9000, ::1" и далее Code: 210. DB::NetException: Connection refused (localhost:9000, ::1) после чего соединение с ClickHouse пропадает, а сама база со спокойной душой отправляется в самостоятельный рестарт.
Ограничил max_memory_usage до 3 гб. После этого клиенту при выполнении запроса выдается Memory limit exceeded - то есть всё в целом ожидаемо. Но если пользователь запускает этот запрос повторно разок-другой, то мы вновь получаем ситуацию когда сервер отправляется в рестарт. Грустно.
Какой из этой ситуации может быть выход? Ограничение max_memory_usage, конечно, такая себе мера, но как сделать, чтобы база не рестартовалась при повторном запуске "большого" запроса?
Есть ещё пара настроек - max_bytes_before_external_group_by и max_bytes_before_external_sort. Если не хватает оперативы при группировке или сортировке - то промежуточные данные будут сбрасываться на hdd
Скорее всего у вас OOM Killer убивает процесс КХ. Посмотрите в dmesg
Обсуждают сегодня