将Postgres连接池大小设置得过高的风险是什么?

时间:2014-08-22 13:36:41

标签: ruby-on-rails postgresql

我正在使用Sidekiq并行运行大量作业,其中很多都无法连接到数据库,因为我的连接池大小只有5个。

我想将其提升到15(至少在本地主机上)但是想知道这可能带来的负面后果是什么。

安装程序是Ruby on Rails,默认的poolize是5。

1 个答案:

答案 0 :(得分:3)

这取决于许多因素,如:

  1. 您要为数据库池分配多少内存
  2. 你的联系持续多长时间
  3. 连接超时
  4. 数据库服务器与app / web服务器相比的位置
  5. 还有一些连接池也有其他调整,例如要打开的最小连接数(即使没有使用),以及看起来像你想要设置的最大打开连接。

    我听说只要打开10个连接就可能会使网卡饱和。

    我认为唯一的答案是根据您拥有的内容监控您的cpu / memorry / io使用情况,以便您拥有某种基线,然后将连接数量提高并进行比较。< / p>

    就我个人而言,我认为你应该没有15个连接。已经将服务器推到极限或者拥有一个256MB内存的小型虚拟机:)

    将值设置得太高可能会使postgres的允许打开连接数达到饱和(检查默认值但可能大约为100)。如果您过早关闭服务而不允许它正常关闭连接,这可能会成为一个问题。然后,当您尝试重新启动应用服务器时,它会错误地说postgres不允许更多连接。这不是设置得太高的问题,因为在任何一种情况下都会发生这种情况,但它会def。加速这个问题。