乘客失去了大量的同时请求

时间:2010-10-16 22:46:24

标签: ruby ubuntu ruby-on-rails-3 passenger

我遇到了一个Rails 3应用程序的问题。当许多请求被发送到服务器(10 /秒)时,整个服务器停止。我尝试了很多不同的乘客设置,有时我注意到了一些改进,但没有一个最终成为一个解决方案。

我的设置:

  • Intel i7(8核)
  • 8GB ram
  • Ubuntu 10.04服务器
  • Ruby 1.9.2
  • Rails 3
  • Apache 2.2.14
  • 乘客2.2.15
  • MySQL 5.1.41

我目前的passenger.conf:

  

PassengerMaxPoolSize 12
  PassengerUseGlobalQueue on   乘客高度表现   RailsS​​pawnMethod smart
  PassengerMaxRequests 5000
  PassengerStatThrottleRate 5
  RailsAppSpawnerIdleTime 0
  PassengerPoolIdleTime 600

此服务器专用于一个应用。好吧,一个应用程序处于分期和生产模式。

我尝试使用PassengerMaxPoolSize,将其设置为4,12,20,40,80 ......停滞不前。奇怪的是,Passenger似乎产生了比定义的MaxPoolSize更多的应用程序。目前它被设置为12但在htop我可以找到至少34个:

  

1234用户名20 0 260M 97572 3892 S 0.0 1.2 0:00.13机架:/var/www/domains/domain.com/current

我只需在应用的根页面打开30个标签即可轻松复制此问题。前10个左右立即加载,剩下的至少需要一分钟来呈现一些东西。

我没有想法。有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

Phusion Passenger可能正在尝试产生更多进程,但在产生时它无法响应请求。尝试实现异步产生的Phusion Passenger 3。

答案 1 :(得分:0)

检查您的rails日志以确保它没有提供任何静态请求(图像,css,js文件等)。如果是,则每个页面加载都会通过乘客触发更多请求。

如果是这种情况,您可以将apache配置为自己发送静态文件,而不是将所有请求转发给乘客。