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

标签 ruby-on-rails postgresql

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

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

设置为 Ruby on Rails,默认池大小为 5。

最佳答案

这取决于很多因素,例如:

  1. 您想为数据库池分配多少内存
  2. 您的连接持续多长时间
  3. 连接超时
  4. 与您的应用程序/网络服务器相比,您的数据库服务器的位置

一些连接池还有其他调整,例如打开的最小连接数(即使未使用),以及看起来像您尝试设置的最大打开连接数。

我听说只要打开 10 个连接,您的网卡就有可能饱和。

我认为唯一的答案是根据您拥有的东西监控您的 cpu/内存/io 使用情况,这样您就有了某种基线,然后增加连接数并进行比较。

我个人认为,如果您没有将服务器推到极限或者拥有一个带有 256MB 内存的小型虚拟机,那么 15 个连接应该没问题:)

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

关于ruby-on-rails - 将 Postgres 连接池大小设置得太高有什么风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448361/

相关文章:

javascript - Postgres 更新插入的值而不是所有列

postgresql - 何时需要在 postgres 中运行 REINDEX

依赖于多个表的 SQL 约束

ruby-on-rails - 在 Rspec Rails 3 中使用特性规范嵌套场景

ruby-on-rails - Rails 调试方法只输出 !binary 值

ruby-on-rails - Postgresql日期格式错误

sql - 只比较postgres中两个时间戳的时间

postgresql - 在 postgresql 上创建一个表

sql - IS FALSE 和 = 'f' 在 Postgres 和索引使用中的区别

ruby-on-rails - Rails 应用程序中的 Capistrano 部署错误