我们的生产服务器在 CentOS5.2 上运行 Apache v2.2.4。单核细胞增多症v1.2.4 已集成到 Apache 中。
最近,我们的生产服务器遇到了一个问题。从 Apache 的 access_log 中,我发现其中一个 HTTP 请求出现 HTTP 500 内部服务器错误,所有后续 HTTP 请求也失败,但出现 HTTP 503 服务不可用错误。此后,所有请求均未成功。而且,直到一段时间后,我们才意识到我们的应用程序由于此错误而无法运行,然后我们重新启动了 Apache 服务。
我的问题是,
- 在这种情况下,当遇到 HTTP 503 错误时,如何自动重新启动 Apache 服务?是否有任何 Apache 指令可供设置?
- 一般来说,什么原因会导致 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
答案3
我认为你不能,也不应该。你最好让服务器保持原样,然后尝试找到问题的根源。恕我直言,出现错误时重新启动通常是一个糟糕的策略。
如果你仍然坚持,尝试看看类似斯沃琪 (Swatch)监控您的 apache 日志并对 503 错误采取行动。
答案4
当我在 Apache 后面反向代理的某个服务关闭时,我遇到了 503 错误。重新启动反向代理的服务可以修复此问题,但如果我关闭了该服务,则会出现此错误。
也许某些扩展正在尝试联系另一个未运行或超时的服务。