0

我正在从 Thin 迁移到 Unicorn。除了加载特定的 Gem 包外,我在大多数网站上都取得了成功。我不认为这是包本身,而是 Unicorn 如何与 Initializer 文件交互。

这是我目前的unicorn.rb设置。因为我使用的是 Mongoid,所以我没有使用 before_fork 或 after_fork。

worker_processes 3
timeout 30
preload_app true

初始化文件在/config/initializers/asin.rb

ASIN::Configuration.configure do |config|
  config.secret        = ENV['AMAZON_SECRET']
  config.key           = ENV['AMAZON_KEY']
  config.associate_tag = ENV['AMAZON_TAG']
  config.version       = ENV['AMAZON_VERSION']
end

Rails 会自动加载初始化文件中的信息吗?

4

2 回答 2

3

如果您要使用preload_app true 并且在加载时打开了套接字,那么除非您花时间编写before_forkafter_fork独角兽钩子,否则您可能会遇到麻烦。

preload_app 上的Unicorn 文档对此进行了更详细的讨论。

[预加载] 在使用写时复制友好的 GC 时可以节省内存,但当主进程在加载时打开套接字等资源并由多个子进程共享时,可能会导致坏事发生。

一般来说,我建议保留preload_app false,直到你确定一切正常。当您准备好优化部署时,您可以考虑采取必要的步骤来预加载应用程序。

于 2012-10-29T00:42:42.140 回答
0

是的。只要你把它放进去config/initializers,它就会被加载。

于 2012-10-27T14:28:22.610 回答