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!不习惯,为什么? (忽略分阶段重启问题.)
解决方法
你可以阅读这篇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!如果可能的话.