oom_canary_enable
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_max_backoff_seconds。
oom_canary_max_backoff_seconds
oom_canary_max_rapid_relaunches
oom_canary_max_backoff_seconds 后重置,因此,如果 canary 只是在较长运行时间内偶尔退出,
最终不会被禁用。
仅在 oom_canary_relaunch 为 true 时适用。
oom_canary_relaunch
oom_canary_max_rapid_relaunches 和 退避 设置的限制。只有在 cgroup v2 的 memory.events.local 提供 OOM-kill 证据时,OOM response sequence 本身才会运行。
oom_canary_size
mlock 锁定该区域只是尽力而为:这需要 CAP_IPC_LOCK 或足够的
RLIMIT_MEMLOCK;如果锁定失败,canary 会记录警告日志,而该内存仍会保持
已分配状态,但可能会被换出。
默认值为 100 MB (104857600) 。值越大,canary 就越容易成为 OOM 的目标。