Rails的Phusion Passenger app preloader

时间:2014-09-16 06:53:00

标签: ruby-on-rails postgresql redis memcached passenger

我最近转而使用Phusion Passenger 4.0.50取代Unicorn。 原因是因为Passenger与Nginx很好地集成,也可以为Node.js应用程序提供动力。但是,我想知道的是,我是否应该像使用Unicorn那样对外部连接(使用Postgresql,Redis,Memcached)做任何事情。

我在Passenger git上找到了一些代码,例如this one。但是这段代码似乎属于Passenger而不是Rails应用程序。

截至目前,我正在使用Ruby 2.1.2和Rails 4.1.6。是否还需要处理外部连接的工作?如果是的话,我应该怎么做?

感谢。

更新

根据这个thread,似乎正常的ActiveRecord被Passenger自动照顾。

2 个答案:

答案 0 :(得分:4)

Phusion Passenger作者在这里。是的,你必须对外部连接做些什么。 "智能产卵" Phusion Passenger中的概念与" preload_app完全相同"独角兽的概念。我们在文档中有一整节说明它是如何工作的以及警告的内容(具体来说,关于外部连接):https://www.phusionpassenger.com/documentation/Users%20guide%20Nginx.html#spawning_methods_explained

唯一的例外是Rails默认的ActiveRecord连接。我们会自动重新建立,因为它占据了超过90%的用例。

答案 1 :(得分:1)

Passenger启动多个sepearate工作进程,每个进程都加载rails应用程序。因此,每个webrequest都由一个线程内的完全隔离的进程处理。这意味着您根本不必关心连接池。例如,在ActiveRecord的情况下,默认情况下可以有5个并发连接(可以调整),在您的情况下,您总是只有一个连接(每个进程)

相关问题