我一直在考虑如何设置适当的池大小(在database.yml中)。
我在what is the use of the pool option in database.yml上看到了一个类似的问题,但需要进一步了解这一点。
这是我的装置。我有运行Unicorn与5个工作进程‘的实例。我还拥有并发设置为5的Sidekiq实例(我正在添加5个并发线程)。
我应该考虑一下游泳池的大小吗?我还应该考虑哪些因素呢?
到目前为止,这是我的理解(引用了我刚才对一位工程师的话):
假设您将其保留在默认的5中,这意味着,在“单个进程”中,池大小为5。池为每个进程。它不是系统范围的,所以值为5并不意味着您仅限于5个进程,它只是意味着每个进程都有自己的池,大小为5。
概括地说,每个实例的db池大小为5。这也意味着db池大小设置不是应用程序宽度,而是每个进程/实例。这也意味着,因为Sidekiq和Unicorn将在自己的实例中运行。它将有自己的db池大小为5。这个假设正确吗?
此时,我可以假设默认池大小5通常是安全的。你的想法?
PS。如果您可以共享AWS RDS实例的池大小。我会很感激的。
发布于 2015-10-04 13:57:11
在database.yml中,您的池大小不应该小于侧翼/独角兽进程的最大数量(而不是和)。例如,如果独角兽运行有5个进程,而sidekiq以15并发开始,则应该设置15个池大小。或者,如果独角兽与7,而侧翼与5,你需要7个连接在database.yml。
https://stackoverflow.com/questions/21469297
复制相似问题