【发布时间】:2019-02-04 17:03:40
【问题描述】:
一直在阅读它,但不确定我是否完全理解在 Rails 中与 Postgres 的连接是如何工作的。我有多达 5 个网络测功机,每个运行 5 个进程(独角兽),所以最多可以有 25 个连接,然后通过 delay_job 最多可以有 50 个工作测功机,所以这将是 75。
但是当工作队列增长并且我正在运行所有 50 个工作人员测功机时,似乎我达到了 128 的 Postgres 连接限制,我想这不会很好。
web dynos 是否可以为每个进程打开多个连接?工人也可以这样做吗?
如果它与池数据库设置有关,对于 Unicorn 来说,是每个工作进程或每个 dyno 的连接池吗?这对我来说不是很清楚(根据 Corey 的 cmets),尽管它似乎是每个 Unicorn 工作进程。
有没有办法设置delayed_job worker dynos pool 设置?我猜这也是 5 的默认值。
任何好的资源或解决方案都会非常有帮助。似乎 PGbouncer 是一种选择,或者将池从默认的 5 设置为更低的值,例如 1 或 2。
编辑:我错误地将 NewRelic 日志读取为每个事务的毫秒数,但该类别的总毫秒数,因此不会减慢 Postgres 的速度,但达到连接限制仍然不理想。
【问题讨论】:
标签: ruby-on-rails postgresql heroku