首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Heroku Postgres在Rails上的连接

Heroku Postgres在Rails上的连接
EN

Stack Overflow用户
提问于 2018-08-29 20:09:09
回答 1查看 62关注 0票数 0

一直在阅读它,但我不确定我是否完全理解到Postgres的连接是如何在Rails中工作的。我有多达5个web dynos,每个进程运行5个进程(Unicorn),因此这将达到25个连接,然后通过delayed_job最多运行50个worker dynos,因此这将是75个。

但是,当工作队列增长,我运行所有50个工人dynos时,我似乎达到了Postgres连接限制128,我想这不太好。

是否每个进程都可以打开多个连接?工人们也能这样做吗?

如果这与池数据库设置有关,那么Unicorn是每个工作进程或每个dyno的连接池吗?这一点在我看来还不清楚(根据Corey的评论),尽管这看起来像是Unicorn的工作流程。

是否有一种方法来设置delayed_job工作者dynos池设置?我猜这也是5的缺省值。

任何好的资源或解决方案都会很有帮助。PGbouncer似乎是一种选择,或者将池从默认的5设置为更低的值,比如1或2。

编辑:我错误地将NewRelic日志读取为每个事务的ms,但这是该类别的总ms,因此它没有减慢Postgres的速度,但达到连接限制仍然不理想。

EN

回答 1

Stack Overflow用户

发布于 2018-08-29 20:25:29

一个Rails实例可以使用线程处理多个传入请求,尽管使用GIL,因此默认配置是打开到数据库的多个连接(每个线程一个),并使用连接池管理对它们的访问。默认情况下,Rails配置为在这个池中维护最多5个连接,但您可以根据需要调整大小。

通常,我会在答案中提供这些信息,但是有很多因素需要考虑,所以我将提供指向两个文档的链接,您应该查看这些链接:

  1. 中的并发性和数据库连接
  2. 使用Unicorn部署Rails应用程序

最后,我将给您留下一些来之不易的建议:、and、Unicorn和DelayedJob,支持Puma和Sidekiq。Puma + Sidekiq是多线程的,开发时考虑到性能。Puma是Rails 5中的默认应用服务器,Heroku也推荐使用它。Sidekiq是Ruby社区中事实上的后台作业处理库,得到了广泛的支持和商业支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52085375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档