Phusion Passenger产卵问题

时间:2010-08-13 20:31:44

标签: ruby-on-rails-3 passenger

我正在使用Rails 3RC应用程序并首次使用Phusion Passenger。在第一个请求启动应用程序大约需要30秒,这是我的应用程序中每个ruby进程的典型内存消耗:

PID VMSize私人名称
18161 263.5 MB 75.4 MB机架:/ rails_apps / my_app / current

这是典型的内存消耗吗?我的应用程序大约是11MB(如果你不包括我/公共资产,则<4MB)。

如果有一个用户,它在第一次请求后运行正常,但是当我运行一些自定义压力测试脚本时遇到问题,并且当我使用我的搜索建议功能时会产生一堆快速的ajax调用(我所期待的,因为下一个请求是在第一个请求结束之前到达的。这是我觉得很奇怪的..服务器开始产生Ruby线程,需要额外的30秒才能加载,但是在产生的时候没有其他请求可以通过。为了仔细检查,我测试了其他网络上的浏览器,而这些进程只是为了确保它不是我本地机器特有的东西(就像从一个进程提供的所有请求一样)。这些浏览器请求必须等到所有新生成完成。

所以我的问题是......这是乘客的典型行为吗?在任何其他请求之前等待产卵可以通过吗?通过查看文档,我认为其他请求将由产生正在发生的空闲ruby进程处理。以下是我正在使用的版本,以防你们知道任何不兼容性。提前致谢!我真的不想回到Mongrel; - )

我的设置
四分之一切片Rackspace Cloud(4GB RAM和1/4双四核)
CentOS 5.4
Rails 3.0RC
ruby 1.9.2dev(2010-05-31修订版28117)[x86_64-linux]
乘客2.2.15与杂种

nginx配置选项:
passenger_max_pool_size 30;
乘客启用; #in / location block ..

我尝试了保守的产卵,我也看到了同样的行为。

1 个答案:

答案 0 :(得分:2)

乘客3出现异步产卵。您甚至可以设置最少数量的流程来保留。

即使使用旧行为,大多数高流量网站也不会遇到此问题,因为:

  1. 产生第一个过程通常要快得多。对我来说,Rails应用程序通常需要5秒钟才能生成。
  2. 智能产卵方法可以更快地产生额外的过程,通常只需要原始时间的10%。
  3. 拥有高流量网站的用户通常会将池空闲时间设置为更高的值,以便流程不会在白天关闭,只能在夜间清理自己。
  4. 你的内存使用率有点高。我见过的大多数Rails应用都需要20-50 MB的私有内存。