我一直在考虑设置适当的池大小(在database.yml中)。

我在what is the use of the pool option in database.yml上看到了类似的问题,但需要进一步了解。

这是我的设置。我有使用5个工作进程运行Unicorn的实例。我也有并发设置为5的Sidekiq实例(我假设多数民众赞成在5个并发线程)。

我的泳池面积应该考虑什么?我还应考虑哪些其他因素?

到目前为止,这是我的理解(引用我之前与之交谈的工程师的话):



概括来说,每个实例的数据库池大小为5。这也意味着数据库池大小设置不是应用程序范围的,而是每个进程/实例的。这也意味着,因为Sidekiq和Unicorn将在其自己的实例中运行。它自己的数据库池大小为5。这种假设正确吗?

在这一点上,我可以假定默认的池大小5通常是安全的。你的意见?

PS。是否可以共享AWS RDS实例的池大小。这将不胜感激。

最佳答案

您在database.yml中的池大小应不小于sidekiq/unicorn进程的最大数量(而非总和)。例如,如果 unicorn 以5个进程运行,sidekiq以15个并发开始运行,则应将池大小设置为15。或者,如果 unicorn 使用7,sidekiq使用5,则在database.yml中需要7个连接。

10-07 22:35