gpt4 book ai didi

ruby-on-rails - 我应该在Heroku上对Puma使用preload_app吗?

转载 作者:行者123 更新时间:2023-12-04 04:34:21 25 4
gpt4 key购买 nike

我正在Heroku上运行一个小的Rails应用,其中有一个dyno和几个Puma worker 。

Puma docs说:

General rule is to use preload_app when your workers die often and need fast starts. If you don’t have many workers, you probably should not use preload_app.



这表明我不应该在 preload_app!中使用 config/puma.rb。但是,我有几个 Unresolved 问题:
  • 我的 worker 什么时候死亡?经过一定数量的请求后,它们会被收割并重新 fork 吗?我该如何监控?
  • 我怎么知道我的 worker 是否需要快速起步?

  • 显然, preload_app!在使用许多工作程序时应该节省资源,但是即使有少量工作程序,我也看不到使用它的缺点。

    Heroku的“简单的Rails应用程序”的 recommended config包括 preload_app!,但它们不提供有关何时不使用它的任何指导。

    什么时候不应该使用 preload_app!,为什么? (忽略分阶段重新启动问题。)

    最佳答案

    除了快速启动工作程序外,由于Ruby 2.0中引入了Copy on Write功能,因此preload_app!还节省了内存。

    您可以阅读下面的great write-up from Heroku,它介绍了Ruby中写时复制的思想:

    Copy on Write or COW is an optimization that can reduce the memory footprint of a Ruby process when it is copied. Instead of allocating duplicate memory when a process is forked, COW allows multiple processes to share the same memory until one of the processes needs to modify a piece of information.



    因此,无论您有多少工作,总是建议尽可能启用 preload_app!

    关于ruby-on-rails - 我应该在Heroku上对Puma使用preload_app吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34066025/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com