【问题标题】:Apache+Passenger - Apache running; but not responding to requestsApache+Passenger - Apache 运行;但不响应请求
【发布时间】: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


【解决方案1】:

由于静态文件负载巨大,出于性能考虑,我们决定将静态文件托管在单独的服务器(后来的 Amazon S3+CloudFront)上。

我目前的猜测是 Apache 无法处理对静态文件的大量请求并且也在做Passenger。当前设置是用于 Rails 应用程序的 Nginx+Unicorn 和用于静态文件的 S3+CloudFront。

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多