网站负载过重 + ROR

Posted

技术标签:

【中文标题】网站负载过重 + ROR【英文标题】:The website is under heavy load + ROR 【发布时间】:2013-12-30 11:47:31 【问题描述】:

我们在 CentOS 6 上运行一个带有 ROR 的网站,它有 2 个 Web 服务器和 1 个数据库服务器。有时它会显示消息“网站负载过重”...请帮助您在此处检查什么。

我们将 Passenger 4.0.21 与 Ruby 1.8.7 和 Apache 2.2.15 一起使用。 Web 服务器以默认设置运行。

以下是乘客状态的一些输出:

# 乘客状态

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

【问题讨论】:

【参考方案1】:

队列中有太多请求。从版本 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。队列似乎被卡住了。 同样的问题,队列卡住了。我检查了日志文件没有处理。然后我需要重新启动 nginx 服务器。你有什么解决办法吗? @surendar 抱歉,我错过了您的评论。除了增加passenger_max_request_queue_size,我不知道有什么解决办法 这里也一样。我收到了那个错误,但 CPU 使用率接近 0。我不得不重新启动 nginx,现在一切正常

以上是关于网站负载过重 + ROR的主要内容,如果未能解决你的问题,请参考以下文章

邀请好友的 RoR 插件

服务器负载均衡方案

由于 onCreate 活动的负载过重,如何避免活动之间出现黑屏

RoR 服务器构建和 Capistrano 支持

如何为网站设置负载/压力测试? [关闭]

大型网站架构系列:负载均衡详解