HTTP 503 错误后如何自动重新启动 Apache 服务?

HTTP 503 错误后如何自动重新启动 Apache 服务?

我们的生产服务器在 CentOS5.2 上运行 Apache v2.2.4。单核细胞增多症v1.2.4 已集成到 Apache 中。

最近,我们的生产服务器遇到了一个问题。从 Apache 的 access_log 中,我发现其中一个 HTTP 请求出现 HTTP 500 内部服务器错误,所有后续 HTTP 请求也失败,但出现 HTTP 503 服务不可用错误。此后,所有请求均未成功。而且,直到一段时间后,我们才意识到我们的应用程序由于此错误而无法运行,然后我们重新启动了 Apache 服务。

我的问题是,

  1. 在这种情况下,当遇到 HTTP 503 错误时,如何自动重新启动 Apache 服务?是否有任何 Apache 指令可供设置?
  2. 一般来说,什么原因会导致 Apache 出现 HTTP 503 错误?

笔记:Mono 有助于在基于 Linux 的操作系统上运行使用 .NET 开发的应用程序。

编辑: 我同意找到这个问题的根本原因。事实上,我们也一直在分析这个问题。在我们解决这个问题之前,我们正在研究是否可以立即自行重启,而不会对应用程序用户造成任何停机/服务中断。

答案1

您确实应该修复该问题,但您可以运行如下命令来临时解决问题:

#!/bin/sh                                                                                                            
HTTP_STATUS=`lynx -head -source http://mysite.com |head -1 |awk '{print $2}'`                             
if [ "$HTTP_STATUS" = "503" ]                                                                                       
then                                                                                                                 
        /etc/init.d/http restart                                                                                   
fi                                                                                                                   

答案2

503 错误通常与正在服务的应用程序错误或配置错误有关。它应该在 apache 的错误日志中(如果您没有错误日志,请在配置中使用错误日志指令并控制你想要的错误日志级别日志级别)。

您可以使用监控检查某个页面,查看确定页面的 HTTP 代码是否正常,如果不正常该怎么做(比如,重新启动 apache)。

答案3

我认为你不能,也不应该。你最好让服务器保持原样,然后尝试找到问题的根源。恕我直言,出现错误时重新启动通常是一个糟糕的策略。

如果你仍然坚持,尝试看看类似斯沃琪 (Swatch)监控您的 apache 日志并对 503 错误采取行动。

答案4

当我在 Apache 后面反向代理的某个服务关闭时,我遇到了 503 错误。重新启动反向代理的服务可以修复此问题,但如果我关闭了该服务,则会出现此错误。

也许某些扩展正在尝试联系另一个未运行或超时的服务。

相关内容