首页 > 解决方案 > Sidekiq 和 puma 共享同一个数据库连接池吗

问题描述

我正在运行一个生产应用程序

rails 6.0.3. 
Puma currently runs with 1 worker and 5 threads.
Also the database connection pool is set to 5 in config/database.yml.
mysql: 5.7

直到我们最近引入了具有8. 因此,为了确保 sidekiq 的所有 8 个线程都能在最坏的情况下获得打开的连接,我们在 config/database.yml 中将池大小增加到 8

我的问题是 sidekiq worker 是否与 puma worker 共享同一个数据库池。所以假设,如果所有 8 个连接池都被 8 个 sidekiq 线程使用,并且同时有一个 web 请求,它会导致 ActiveRecord::ConnectionTimeoutError。

如果他们不共享同一个池,则不应出现错误。我想了解这种行为。此外,我了解 puma 的两名工人有自己的本地游泳池。他们不分享它。

谢谢

标签: ruby-on-railsactiverecordsidekiq

解决方案


它们是独立的过程;每个进程有 8 个连接。


推荐阅读