ruby-on-rails - 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 的两名工人有自己的本地游泳池。他们不分享它。
谢谢
解决方案
它们是独立的过程;每个进程有 8 个连接。
推荐阅读
- mysql - 读取端延迟和响应性
- python - 如何使用 zoho mail 设置烧瓶邮件
- spring - Spring Boot Zuul 服务器日志记录
- javascript - Discord.js - 承诺被“覆盖”的问题?
- sql - 在 Order by 子句中使用 date_part 函数始终返回必须出现在 Group by 子句中的列
- xml - 使用powershell操作xml文件dom并创建另一个xml文件
- r - ggplot2:在中心类别上居中堆积条形图
- unix - 在 Ubuntu 18.04 LTS 上安装 Google Cloud SDK 后,apt-get 损坏
- regex - 如何使此查询采用多列?
- java - 限制双应用程序功能的移动用户仅运行单个应用程序