微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 我应该在Heroku上使用prema_app和Puma吗?

我正在Heroku上运行一个小型Rails应用程序,其中有一个dyno和几个Puma工作者.

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中.但是,我有一些未解答的问题:

>我的工人何时死亡?在一定数量的请求之后,它们会被收获并重新分叉吗?我该如何监控?
>我怎么知道我的工人是否需要快速启动?

很明显preload_app!在使用许多工人时应该节省资源,但即使只有少量工人,我也看不到使用它的缺点.

Heroku的“一个简单的Rails应用程序”的recommended config包括preload_app!但他们没有就何时不使用它提供任何指导.

什么时候应该preload_app!不习惯,为什么? (忽略分阶段重启问题.)

解决方法

除了快速启动工作人员,preload_app!由于Ruby 2.0中引入了 Copy on Write功能,因此也可以节省内存.

你可以阅读这篇great write-up from Heroku,介绍Ruby中的copy-on-write的想法:

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!如果可能的话.

原文地址:https://www.jb51.cc/ruby/269586.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐