确定 Puma 上 Rails 4 应用程序的最佳数据库池大小

Dan*_*ell 5 postgresql activerecord ruby-on-rails heroku puma

ActiveRecord::ConnectionTimeoutError最近在我的应用程序上遇到错误。这是一个部署到 Puma 上 Heroku 的 Rails 4 应用程序。当我运行heroku pg:info时,当我遇到ActiveRecord::ConnectionTimeoutError错误时,我可以看到只有 5/20 个连接处于活动状态。在阅读了 Heroku 上的这篇论坛帖子后,我最终将 myMAX_THREADSMIN_THREADSenv 变量从 2 增加到 5 ,这使问题暂时消失了,但该解决方案似乎对问题应用了一些黑魔法并希望它消失。

我想知道的是如何正确确定连接池需要多大。现在我有一个网络工作者和两个额外的resque工作者在运行。

我的应用程序目前处理大量 S3 图像上传,我认为这可能会引发问题。这是我想传递给resque工作人员以释放网络工作人员的事情。我确实注意到在增加池大小后上传过程显着加快,但是我担心仅增加池大小不是可扩展的长期解决方案。