代码之家  ›  专栏  ›  技术社区  ›  Peter Nixey Axe

将Postgres连接池大小设置得太高有什么风险?

  •  4
  • Peter Nixey Axe  · 技术社区  · 10 年前

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

    我想把它提高到15(至少在本地主机上),但我想知道这可能会带来什么负面后果。

    设置为RubyonRails,默认池大小为5。

    1 回复  |  直到 10 年前
        1
  •  4
  •   public static    10 年前

    这取决于许多因素,如:

    1. 要为数据库池分配多少内存
    2. 你的联系持续多久
    3. 连接超时
    4. 与app/web服务器相比,数据库服务器的位置

    有些连接池也有其他调整,例如打开的最小连接数(即使未使用)和最大打开连接数,这看起来就像您正在尝试设置的一样。

    我听说你可能会让你的网卡充满10个开放连接。

    我认为唯一的答案是 根据您所拥有的资源监控您的cpu/内存/io使用情况,以便您有某种基线 ,然后增加连接计数并进行比较。

    我个人认为,如果你还没有将服务器推向极限,或者拥有一个256MB内存的小型虚拟机,你应该可以使用15个连接:)

    将该值设置得太高可能会使postgres允许的开放连接数饱和(检查默认值,但可能在100左右)。如果您过早地关闭服务,而不允许它优雅地关闭连接,这可能是一个问题。然后,当您尝试重新启动应用服务器时,它会出错,表示postgres不允许任何其他连接。这不是将其设置得太高的问题,因为无论在哪种情况下都会发生这种情况,但这会加速问题的发生。