【问题标题】:Is it possible to run Sidekiq in the same process with a puma rails server?是否可以使用 puma rails 服务器在同一进程中运行 Sidekiq?
【发布时间】:2016-04-04 17:05:27
【问题描述】:

它的架构中是否有什么让它难以做到?

我想在内存很少的 VM 中运行现有的 rails+sidekiq 应用程序,并且在两个不同的进程中加载​​整个 rails 堆栈会占用大量 RAM。

【问题讨论】:

    标签: ruby-on-rails sidekiq puma


    【解决方案1】:

    Puma 旨在启动同质 Web 工作线程,并在它们之间划分传入请求。如果您想修改它以生成单独的 Sidekiq 线程,从技术上讲,使用疯狂的 puma.rb 文件应该是可能的,但我找不到这样做的先例(编辑:下面 Mike 的回答指出,sucker_punch gem 基本上可以这样做是为了提高内存效率)。实际上,如果您的 VM 不能支持同时运行两个 Rails 进程,它可能无法处理增加的内存负载,因为您的应用程序同时执行 Sidekiq 和 Puma 的工作……但这取决于您的工作量。

    如果这只是出于开发目的,您可以通过打开Sidekiq's inline mode(通常仅用于测试)来完成您正在寻找的内容:

    require 'sidekiq/testing'
    Sidekiq::Testing.inline!
    

    这将导致所有 perform_async 调用实际执行内联,而不是进入 Redis 并被 Sidekiq 进程拾取。

    【讨论】:

      【解决方案2】:

      没有官方的。

      这就是sucker_punch 的用途。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 1970-01-01
        • 2018-11-19
        • 1970-01-01
        相关资源
        最近更新 更多