PostgreSQL - 调整 work_mem 和 max_connections

PostgreSQL - 调整 work_mem 和 max_connections

我在用PG调频帮助我使用 PostgreSQL 9.5 调整 Web 应用程序

一些背景信息 - 该 Web 应用是一个房地产搜索网站,白天最多有 200 名活跃用户执行相当复杂的基于位置的查询。GeoDjango 用于托管该网站。

我的问题是关于调整work_memmax_connections。在 PGTune 中,我注意到当我增加 时max_connections,建议work_mem会减少。我有几个问题:

  1. 根据经验法则,您是否应该max_connections尽可能保持低水平,以便work_mem释放更多资源,从而为每个单独的查询提供更好的性能?
  2. 对于一个同时拥有最多 200 个活跃用户并不断执行查询的网站 -max_connections我应该拥有多少个查询?
  3. 我目前设置max_connections为 500,而 PGTune 建议work_mem的是 8388kB。是否值得减少max_connections到 400 或 300,这样我就可以增加work_mem

答案1

我注意到,当我增加 max_connections 时,建议的 work_mem 会减少

PGTune 假设如果打开更多连接,那么将有更多查询同时运行,然后可能会分配更多倍数,但这种分配是动态发生的。实际上,这取决于发送到数据库的查询将执行的操作,而 PGTune 无法知道。和work_mem之间没有硬依赖关系。max_connectionswork_mem

由于您的数据库已经在生产中运行,因此您可以比 PGTune 更好地了解如何通过观察它来调整它。

查询是否使用磁盘上的临时存储?监控temp_filestemp_bytespg_database。如果没有,你也不需要增加work_mem

服务器是否有大量可用内存?如果有,您可以增加内存work_mem而不必担心max_connections

select count(*) from pg_stat_activity与 相比,您实际拥有的连接数 ( ) 是多少max_connections?如果您接近限制并且正在减少它,您的应用程序将无法连接。

相关内容