gpt4 book ai didi

ruby-on-rails - 为单线程 Rails 应用正确设置数据库连接池 database.yml

转载 作者:太空狗 更新时间:2023-10-30 01:38:41 26 4
gpt4 key购买 nike

我想知道 Rails database.yml 中的以下设置:

默认情况下,ActiveRecord的连接池的数据库连接数设置为5:

development:
...
pool: 5

但默认情况下,Rails 3 是单线程的。为什么默认需要 5 个连接?

据我了解,单线程 Rails 应用程序无法同时触发多个数据库操作,为什么您需要保持更多连接打开?

我假设 2 个连接是有意义的,所以即使另一个连接超时,您也始终有一个事件连接,但保持五个连接对我来说似乎有点奇怪。

我错过了什么吗?

更新如果其他人好奇,我只是找到了一个解释它的提交: https://github.com/rails/rails/commit/b700153507b7d539a57a6e3bcf03c84776795051

事实上,这些默认设置没有任何意义,它是固定的,但由于测试套件而暂时恢复(一年前)。

最佳答案

这里的派对已经很晚了,但我今天在生产中用完了数据库连接。

和很多人一样,我使用 Sidekiq 来执行异步作业,例如发送电子邮件。重要的是要注意 Sidekiq 作为多线程进程运行。

所以,我只是有一个单线程 Rails 应用程序,因此这个答案并不直接适用于所问的问题,但我认为在这里值得多说几句,因为我认为多线程 Rails现在的应用程序相对正常。

这意味着您需要调整池大小,以创建足够的连接来处理所有可以排队的作业,并且需要超过 5 秒(在抛出一个请求之前等待数据库连接的默认超时时间)错误)。

关于ruby-on-rails - 为单线程 Rails 应用正确设置数据库连接池 database.yml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15086880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com