我正在使用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 ..
我尝试了保守的产卵,我也看到了同样的行为。
答案 0 :(得分:2)
乘客3出现异步产卵。您甚至可以设置最少数量的流程来保留。
即使使用旧行为,大多数高流量网站也不会遇到此问题,因为:
你的内存使用率有点高。我见过的大多数Rails应用都需要20-50 MB的私有内存。