Skip to main content
这些设置用于配置 ClickHouse 服务器,并由 ClickHouse 源代码自动生成。

oom_canary_enable

Experimental。启用 OOM canary:这是一个充当“牺牲品”的子进程,会优先吸引 Linux OOM killer,而不是主 ClickHouse 服务器进程,从而为服务器争取卸载负载的机会。 需要 Linux >= 5.3 (用于 pidfd_open) ;在较旧的内核上,canary 会在启动时被禁用。 OOM response 需要 cgroup v2 memory.events.local 中存在 OOM-kill 证据,并且可能触发全局查询取消、merge 取消以及 system.crash_log 写入。 当服务器所在的 cgroup 启用了 cgroup v2 memory.oom.group 时,canary 无法保护服务器: 此时内核会将整个 cgroup 作为一个整体一并杀死,包括服务器本身, 因此 OOM response 根本不会运行。在这种模式下,启动时会记录一条警告日志。 在完成生产环境验证之前,不同 ClickHouse 版本之间的行为可能会发生变化。

oom_canary_initial_backoff_seconds

连续重新启动 OOM canary 之间的初始退避延迟 (以秒为单位) 。 每次重新启动时,该延迟都会加倍,直到达到 oom_canary_max_backoff_seconds。

oom_canary_max_backoff_seconds

连续重新启动 OOM canary 之间的最大退避时间 (以秒为单位) 。

oom_canary_max_rapid_relaunches

在禁用自动重新启动之前,允许 OOM canary 连续快速重新启动的最大次数, 以避免在持续的内存压力下发生反复重启。计数器和重新启动 退避 会在 canary 存活时间超过 oom_canary_max_backoff_seconds 后重置,因此,如果 canary 只是在较长运行时间内偶尔退出, 最终不会被禁用。 仅在 oom_canary_relaunch 为 true 时适用。

oom_canary_relaunch

当值为 true 时,如果 canary 进程因永久性设置失败或 server 关闭之外的任何原因而终止,OOM canary 都会自动重新启动——包括被 OOM kill、收到其他信号以及临时退出——但会受到 oom_canary_max_rapid_relaunches 和 退避 设置的限制。只有在 cgroup v2 的 memory.events.local 提供 OOM-kill 证据时,OOM response sequence 本身才会运行。

oom_canary_size

OOM canary 子进程分配并实际访问的内存区域大小 (以字节为单位) 。 使用 mlock 锁定该区域只是尽力而为:这需要 CAP_IPC_LOCK 或足够的 RLIMIT_MEMLOCK;如果锁定失败,canary 会记录警告日志,而该内存仍会保持 已分配状态,但可能会被换出。 默认值为 100 MB (104857600) 。值越大,canary 就越容易成为 OOM 的目标。
最后修改于 2026年7月23日