Rails Database connections

本文探讨了在Rails应用程序中提高并发性时如何正确配置数据库连接。文章提供了计算所需数据库连接数量的公式,并介绍了Rails如何维护其内部的数据库连接池。此外,还列举了一个常见错误示例,即ActiveRecord::ConnectionTimeoutError,解释了该错误出现的原因及解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

As you add more concurrency to your application it will need more connections to your database. A good formula for determining the number of connections each application will require is to multiply the RAILS_MAX_THREADS by the WEB_CONCURRENCY. This will determine the number of connections each dyno will consume.

Rails maintains its own database connection pool, with a new pool created for each worker process. Threads within a worker will operate on the same pool. Make sure there are enough connections inside of your Rails database connection pool so that RAILS_MAX_THREADS number of connections can be used. If you see this error:

ActiveRecord::ConnectionTimeoutError - could not obtain a database connection within 5 seconds

This is an indication that your Rails connection pool is too low. For an in depth look at these topics please read the devcenter article Concurrency and Database Connections.

https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#database-connections

https://devcenter.heroku.com/articles/concurrency-and-database-connections

转载于:https://my.oschina.net/u/855913/blog/1835836

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值