max_server_memory_usage
服务器的最大内存消耗还会受到设置
max_server_memory_usage_to_ram_ratio 的进一步限制。0 (默认值) 表示服务器可以消耗所有可用内存 (不包括 max_server_memory_usage_to_ram_ratio 施加的进一步限制) 。
max_server_memory_usage_to_ram_ratio
0.9 (默认值) 表示服务器最多可使用 90% 的可用内存。
可用于降低低内存系统上的内存占用。
在 RAM 和 swap 都较小的主机上,可能需要将设置 max_server_memory_usage_to_ram_ratio 设为大于 1。
此比率会通过两种方式生效:
- 在启动时 (以及重新加载配置时) ,它会将服务器的硬内存限制设为物理 RAM 总量的这一比例,如上所述。
- 在运行时,后台内存工作线程会定期将硬内存限制重新计算为
(resident memory + system available memory) * max_server_memory_usage_to_ram_ratio,从而为同一主机上的其他进程预留余量。在具有有限内存限制的 cgroup 中运行时,将使用 cgroup 的可用内存,而不是整个主机范围内的值。随着其他进程增长、可用内存缩减,服务器的硬内存限制也会随之下调,从而在主机 (或 cgroup) 耗尽内存之前限制其增长。
0 会同时禁用启动时上限和运行时调整。运行时调整在非 Linux 系统上以及在 clickhouse-keeper 中同样属于空操作,后者不会暴露此设置。若要保留静态的启动/重新加载上限,但禁用运行时调整 (即旧版本的行为) ,请将 memory_worker_dynamic_hard_limit 设置为 0。
服务器的最大内存消耗还会受到设置
max_server_memory_usage 的进一步限制。