Heroku最近减少了与生产数据库的可用连接数(从500到60)。打开的连接消耗大量内存并导致问题,因此这似乎是朝着正确方向迈出的一步。
我的应用程序有100多个并发进程,它们同时访问数据库。 Heroku建议使用https://github.com/gregburek/heroku-buildpack-pgbouncer来解决此问题。
我无法找到有关如何执行此操作的正确指南。我能够安装并启用buildpack,但我不知道这些配置变量的作用以及它们如何工作。使用默认配置,我会收到大量ActiveRecord::ConnectionTimeoutError
错误。
有没有人有这方面的经验,如果可以请提供有关如何正确执行此操作以及如何配置需要配置的所有内容的分步指南?
答案 0 :(得分:5)
你在运行什么版本的Rails?我刚刚使用这些步骤将pgbouncer部署到我们的生产webapp(对于在Ruby 2.0上运行的Rails 3.2应用程序)
在那之后它就像宣传的那样工作。我第一次部署时忽略了禁用准备好的语句,这导致我的应用程序爆炸了大量的“重复预备语句错误”。如果您正在使用Rails 4.1或更高版本,那么猴子补丁显然不是必需的,但是我猜Rails 3.2中存在一个错误,它不会解析pgbouncer对数据库URL的更改,从而实际上禁用了预处理语句。