【发布时间】:2010-07-11 08:37:46
【问题描述】:
背景
我正在运行一个 Ruby on Rails 应用程序,它还必须提供大量静态文件。
我目前的设置是:
Debian Linux Lenny 5.0 阿帕奇 2.2.9 乘客 2.2.10
问题
一切运行良好。我看到 apache 进程启动,乘客实例被创建,一切都运行得又快又好。
然后,一段时间后,Apache 不再响应请求。客户端确实获得了连接并且正在“等待响应”,但没有响应。
我无法手动重现此问题。有时它会在重新启动后几个小时发生,有时需要几天才能发生。这是我发现的:
Apache 进程已启动;乘客在那里,但没有任何实例启动(可能是因为实例在一段时间不活动后死亡)
/var/log/syslog、/var/log/messages、apache 的访问和错误日志以及我的 Rails 生产日志中没有错误消息或问题。没有。
当我停止并启动 apache 时,一切都恢复正常。
有人知道这里发生了什么吗?以及如何解决?
【问题讨论】:
-
作为补充说明;由于Passenger,我们正在运行mpm_worker。默认情况下,MaxClients 设置为 200。我们已经将它提高到 1000(和 ServerLimit 到 50)。但我们仍然遇到同样的问题。
-
当它发生时,如果您尝试发送请求,您的 access_log 会发生变化吗?如果您在发生这种情况时关闭乘客会怎样。或者只是优雅地重启 http
-
您可能想尝试使用 nginx w/passenger 来确定问题出在 Apache 还是乘客。
-
您的乘客全球队列是什么样的?我曾经遇到过这些问题。请求在全局队列中堆积。
-
只需做一个版本降级并测试它。我遇到了同样的问题,我刚刚降级了乘客版本,它得到了解决。
标签: ruby-on-rails apache apache2 passenger