PostgreSQL:max_worker_processes 是否受 CPU 限制?

问题描述 投票:0回答:1

我看到很多 PostgreSQL 性能调优博客和 EDB 等公司建议将 PostgreSQL 的 max_worker_processes 设置为机器中的CPU 数量

我们在云中使用专用的 PostgreSQL 13 虚拟机,具有 16 个 vCPU。但Postgres的默认设置max_worker_processes=8。基于默认值 我的想法是 Postgres 最多只能使用 8 个 vCPU,预计最大 CPU 使用率大约为 50%,直到几天前我们遇到了一些连接峰值,这实际上与 I/O 过载有关,但 CPU 却达到了 95峰值期间-99%。

那么 max_worker_processes 与 CPU 有何关系?如果我将其保留为默认值 8,这会产生任何影响吗?或者还有其他方法可以找到最佳值吗?

database postgresql cpu-usage database-performance database-administration
1个回答
0
投票

我认为你误解了

max_worker_processes
。此参数不限制 PostgreSQL 后端end 进程(属于数据库会话的服务器进程)的数量,但限制自定义后台ground 工作进程(例如,其他并行工作进程)的数量。

如果您不使用创建额外后台工作进程的 PostgreSQL 扩展(如

pg_prewarm
pg_timetable
),那么如果您不同时增加
max_worker_processes
(并行的限制),则增加
max_parallel_workers
几乎没有什么用处工作进程。

如果您的工作负载受 I/O 限制或者您的数据仓库一次运行单个查询,则将这些参数设置为与 CPU 核心数量一样高就可以了。对于 CPU 限制的工作负载,我会将这些参数设置得较低,这样您就不会面临并行工作进程使 CPU 过载的危险。将参数设置高以优化响应时间,将参数设置低以优化吞吐量,因为并行查询比单线程查询使用更多资源。

© www.soinside.com 2019 - 2024. All rights reserved.