首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我对Unicorn,Sidekiq和DB池大小的理解是否正确?

我对Unicorn,Sidekiq和DB池大小的理解是否正确?
EN

Stack Overflow用户
提问于 2014-03-14 11:38:45
回答 1查看 4.6K关注 0票数 19

我有独角兽,Sidekiq和Postgres设置。

我正在尝试理解要设置的正确配置,这样我就不会达到最大的db连接限制。在Opsworks中,m1.小型Postgres实例最多可以有121个连接。

我的数据库池大小是5。

考虑一下这个。Sidekiq和Unicorn是自己的过程。因此,每个进程的db池大小为5。如果我在这里的理解是错误的,请纠正我。

如果我有5个独角兽进程,这意味着5*5=25数据库连接

这就是我有点困惑的地方,因为Sidekiq是多线程的。如果Sidekiq的并发性为5.,而db池大小也设置为5,这是否意味着在给定的时间内也有25个潜在的db连接?

这意味着,例如,我可以有50个db连接?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-14 12:04:12

在Unicorn中,每个进程都建立自己的连接池,所以如果db池设置为5,并且有5个Unicorn工作人员,则最多可以有25个连接。但是,由于每个独角兽工作者一次只能处理一个连接,那么除非应用程序内部使用线程,否则每个工作人员实际上只能使用一个db连接。

在Sidekiq中,池中的连接是跨线程共享的,因此每个工作人员至少需要有一个可用的连接。如果您的并发性为5,那么您的池至少需要5。

拥有大于1的池大小意味着每个Unicorn工作人员都可以访问它无法使用的连接,但是它实际上不会打开连接,所以这并不重要。

除非您在应用程序代码中使用线程(并且它们不共享db连接),否则应用程序所需的实际连接总数是每个Sidekiq工作者一个+每个Unicorn工作者一个。

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

https://stackoverflow.com/questions/22403952

复制
相关文章

相似问题

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