PostgreSQL调优之max_worker_processes

3
我正在考虑针对一个非常小的postgres数据库(2核心版本-12.7)进行转换。到目前为止,我所读的所有内容都说max_worker_processes应该设置为分配给postgres的核心数。
我的问题是,如果将其设置为超过核心数,是否会有任何危害?
最终,我们试图使用pg_cron与后端进程,并且由于某种原因,如果将max_worker_processes设置为少于3,则pg_cron无法启动后端进程。
我们正在考虑更新max_worker_processes,但我们找不到任何文档或信息,帮助我们知道这不会引起其他问题。
2个回答

6

max_worker_processes 是集群范围内自定义后台工作者和并行工作者数量的限制。

由于 pg_cron 使用后台工作者,如果将该限制设置得过低,它将无法正常运行。

如果您想允许 pg_cron 启动足够的工作者,但又不想有过多的并行工作者进程(以节省 CPU 资源),则应增加 max_worker_processes 的值,同时保持 max_parallel_workers 较低。

理想的设置取决于您的需求和工作负载。


这个后续问题可能需要单独发布,但仍然与此相关。您是否知道建议将max_worker_processes设置为分配给Postgres的核心数?我想必须有某种原因或推荐才会存在。到目前为止,我还没有找到任何可以解释这一点的东西。 - SimonSays
我从未在任何地方看到过这个建议。我不会推荐这样做。 - Laurenz Albe
我同意,我在很多文章中也看到了这一点(非官方的),但我认为他们把这个和@LaurenzAlbe提到的max_parallel_workers搞混了。 - undefined

0
创建pg_cron作业时,请确保max_worker_processes的数量始终大于cron.max_running_jobs的数量。如果pg_cron作业耗尽了后台工作进程,它将失败。pg_cron作业的默认数量为5;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接