phusion乘客是否使用分叉,如果是,在哪里设置after_fork配置?
phusion乘客是否使用分叉? 如果是这样,我应该在哪里设置after_fork
配置, 如Heroku对unicorn的建议 (re:使用Rails设置PostGIS)?
来自Heroku的文档:
此外,如果在重新建立连接的地方使用独角兽或任何其他进程分叉代码 ,请确保将适配器覆盖到postgis。 例如:
# unicorn.rb after_fork do |server, worker| if defined?(ActiveRecord::Base) config = Rails.application.config.database_configuration[Rails.env] config['adapter'] = 'postgis' ActiveRecord::Base.establish_connection(config) end end
是的,Phusion Passenger确实分叉,几乎和Unicorn一样。 Unicorn的默认行为( preload_app off
)与Phusion Passenger的“直接产卵”(Phusion Passenger中的默认值)相同。 Unicorn的preload_app on
与Phusion Passenger的“智能产生”相同(默认为Phusion Passenger)。 资料来源:
- passenger_spawn_method文档
- 附录C:解释产卵方法
后者还教你如何安装后叉钩。
Phusion Passenger主要是多进程的; 企业版可以同时执行多进程和multithreading。
- Ruby on Rails服务器选项
- http://blog.phusion.nl/2013/03/12/tuning-phusion-passengers-concurrency-settings/
我不知道Passenger是否需要一个after_fork
类型的东西,因为它不是Ruby做过程的分叉,但我不是100%肯定那里。