Postgres Heroku连接限制细节 - Rails应用程序 - ROR

时间:2016-01-21 10:06:53

标签: ruby-on-rails ruby postgresql ruby-on-rails-4 heroku

我正在努力将Heroku免费和合理地用于Rails Postgres应用程序。 关于Heroku Postgres的定价,我可以看到连接限制(最便宜的报价设置为120)。

此连接限制是什么意思? 我已经看过它可能会处理参数max_connections但是即使如此,我也不知道它是如何工作的。

如果我的rails服务器收到订单并请求我的数据库进行更新或简单选择,并且始终使用相同的数据库Postgres用户:它是否计入一个连接? 我不这么认为,但我想了解有关此限制的更多细节。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

max_connection定义同时运行以提供查询的Postgres实例数。 max_connections为同一个postgres用户打开多个连接。它可以在某些情况下提高性能,但这可能会导致性能不佳,如下所示:

  • 磁盘争用:如果您使用的是磁盘(而不是RAM),则需要同时访问更多的表和索引,从而导致整个磁盘搜索量越来越大
  • RAM :这会导致更多的RAM使用。
  • 同步:您需要处理多个实例的同步,这会影响整体吞吐量。

如果您是用户群增加,则由于连接数量有限,您可能会遇到too many clients错误。

有一个概念

解决方案有两个方面:

  • 池连接:如果Postgres无法处理这种情况,您可以在转到Postgres之前使用pgbouncer, repmgr and PgPool等工具来处理池连接。
  • 应用优化:尝试尽可能减少连接,并在工作完成后立即关闭连接。

您可以通过以下链接进一步研究:

你可以在这里特别研究Ruby:https://devcenter.heroku.com/articles/concurrency-and-database-connections#maximum-database-connections