该网站负载很重+ ROR

Rah*_*mar 25 ruby apache centos ruby-on-rails passenger

我们在CentOS 6上运行一个带有ROR的网站,带有2个Web服务器和1个数据库服务器.有时它显示消息"网站负载很重"...有些人可以帮助你在这里检查什么.

我们使用Passenger 4.0.21与Ruby 1.8.7和Apache 2.2.15.Web服务器正在使用默认设置运行.

以下是乘客身份的一些输出:

#passenger-status

Version : 4.0.21
Date    : Thu Dec 12 02:02:44 -0500 2013
Instance: 20126
----------- General information -----------
Max pool size : 6
Processes     : 6
Requests in top-level queue : 0

----------- Application groups -----------
/home/web/html#default:
  App root: /home/web/html
  Requests in queue: 100
  * PID: 20290   Sessions: 1       Processed: 53      Uptime: 24h 3m 5s
    CPU: 0%      Memory  : 634M    Last used: 23h 16m 8
  * PID: 22657   Sessions: 1       Processed: 37      Uptime: 23h 15m 55s
    CPU: 0%      Memory  : 609M    Last used: 22h 44m
  * PID: 29147   Sessions: 1       Processed: 146     Uptime: 20h 47m 48s
    CPU: 0%      Memory  : 976M    Last used: 18h 20m
  * PID: 22216   Sessions: 1       Processed: 26      Uptime: 10h 3m 19s
    CPU: 0%      Memory  : 538M    Last used: 9h 44m 4
  * PID: 23306   Sessions: 1       Processed: 75      Uptime: 9h 43m 22s
    CPU: 0%      Memory  : 483M    Last used: 8h 44m 4
  * PID: 25626   Sessions: 1       Processed: 115     Uptime: 8h 46m 42s
    CPU: 0%      Memory  : 540M    Last used: 7h 59m 5
Run Code Online (Sandbox Code Playgroud)

can*_*nic 25

队列中有太多请求.从版本4.0.15开始,默认值为100.以下是http://blog.phusion.nl/2013/09/06/phusion-passenger-4-0-16-released/的简短摘录,其中说:

如果有太多请求排队,Phusion Passenger现在会向客户端显示一条错误消息,而不是让他们等待.这大大提高了服务质量.默认情况下,"太多"为100.您可以使用PassengerMaxRequestQueueSize(Apache)或 passenger_max_request_queue_size(Nginx)对其进行自定义.

请查看有关此内容的用户指南:http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMaxRequestQueueSize

您可以尝试增加它或将其设置0为禁用它.

编辑

您还应该检查日志以查看是否存在花费太长时间的请求.也许你的代码中有一些过程需要很长时间.我更喜欢使用NewRelic来监控这些事情.

  • 我也看到了这一点.增加passenger_max_request_queue_size是有道理的,但是没有一个进程实际上在做任何事情.它们都是0%的CPU.队列似乎被卡住了. (4认同)
  • 同样的问题是队列卡住了.我检查了日志文件没有处理.然后我需要重新启动nginx服务器.你有什么解决方案吗? (3认同)