【问题标题】:Does Sidekiq share the same database connection pool as pumaSidekiq 和 puma 共享同一个数据库连接池吗
【发布时间】:2021-06-19 00:06:58
【问题描述】:

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

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 worker 之前,一切正常。 因此,为了确保 sidekiq 的所有 8 个线程都能在最坏的情况下获得打开的连接,我们在 config/database.yml 中将池大小增加到 8

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

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

谢谢

【问题讨论】:

    标签: ruby-on-rails activerecord sidekiq


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      应用程序收到连接超时错误的原因应该是因为您的数据库配置为在给定实例处理最大连接集。 通过 Puma 进行的所有数据库连接都完全独立于 Sidekiq 与您的数据库建立的连接。 它在您的数据库服务上,它可以在给定时间处理多少个连接。如果有一些额外的请求,数据库服务将拒绝连接请求。

      【讨论】:

        猜你喜欢
        • 2017-01-20
        • 2010-10-10
        • 1970-01-01
        • 2020-02-14
        • 2015-08-21
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多