我正在使用 Sidekiq 并行运行大量作业,其中很多都无法连接到数据库,因为我的连接池大小只有 5。
我只想将其增加到 15(至少在本地主机上),但想知道这可能带来的负面后果是什么。
设置为 Ruby on Rails,默认池大小为 5。
最佳答案
这取决于很多因素,例如:
- 您想为数据库池分配多少内存
- 您的连接持续多长时间
- 连接超时
- 与您的应用程序/网络服务器相比,您的数据库服务器的位置
一些连接池还有其他调整,例如打开的最小连接数(即使未使用),以及看起来像您尝试设置的最大打开连接数。
我听说只要打开 10 个连接,您的网卡就有可能饱和。
我认为唯一的答案是根据您拥有的东西监控您的 cpu/内存/io 使用情况,这样您就有了某种基线,然后增加连接数并进行比较。
我个人认为,如果您没有将服务器推到极限或者拥有一个带有 256MB 内存的小型虚拟机,那么 15 个连接应该没问题:)
将值设置得太高可能会使允许打开的 postgres 连接数饱和(检查默认值,但它可能在 100 左右)。如果您过早关闭您的服务而不允许它优雅地关闭连接,这可能尤其是一个问题。然后,当您尝试重新启动您的应用程序服务器时,它会出错,提示 postgres 不允许更多连接。这不是将它设置得太高的问题,因为这在任何一种情况下都会发生,但它会发生。加速问题。
关于ruby-on-rails - 将 Postgres 连接池大小设置得太高有什么风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448361/