13

我继承了一个应用程序(我公司内部的),它使用在 Internet Explorer 中运行的 javascript,它使 Ajax 调用在 WebLogic Server v10 中运行的基于 Struts 的应用程序。

系统中的某些服务器端操作耗时超过 3 分钟。用户一直注意到 Ajax 调用在 3 分钟时返回 503 错误。我的用户可以等待超过 3 分钟,但 503 错误会中断他们的工作。

此应用程序需要进行性能调整,但我们迫切需要一个临时解决方法来延长返回 503 错误之前可能发生的时间。

目前的理论是 503 错误是由 IE XMLHttpRequest 对象引发的。一组假定的 WebLogic 专家倾注了我们的代码和 WebLogic 日志,并宣布服务器端没有发生超时。但我有我的怀疑。

我的问题是,哪个软件负责引发 503 错误:浏览器、Ajax javascript 还是服务器?这个超时时间可以改变吗?

4

4 回答 4

4

503 错误是许多不同类型错误的统称,通常在服务器端。在您的情况下,服务器可能只是在某个超时后拒绝连接,并以 503 响应以指示服务器过载或无法处理您的请求。

很多时候使用 Web 服务,当服务器代码抛出异常或错误时,将返回 503。如果服务器代码没有正确处理错误,它将冒泡到服务器,服务器只会以通用 503 响应。

http://www.checkupdown.com/status/E503.html

错误代码 5xx(替代定义)

RFC 2616

于 2009-04-01T01:35:36.093 回答
3

503 是服务器错误。XMLHttpRequest 将愉快地等待超过 3 分钟。您应该做的第一件事是通过在 telnet 或 netcat 或类似中访问问题 URL 并查看带有 javascript 的 503 来满足自己的要求。

然后您可以继续在服务器端查找超时。

于 2009-04-01T01:37:24.607 回答
2

您的 Web 服务器有一个请求回复超时,该超时被长时间运行的服务请求触发。它可以是 WebLogic 服务器或代理。肯定不是客户端。

您是否考虑过提交将立即响应的异步 HTTP 请求,然后轮询另一个位置以获取最终结果?三分钟太长了大约 170 秒。

于 2009-04-01T01:34:44.440 回答
2

503 很可能是由于服务器超时。如果您可以调整您的 Apache 服务器,请阅读您可以在 httpd.conf 中设置的 Timeout 属性。查看 httpd/logs/error_log 以查看是否发生超时。另请参阅此答案:Mod cluster proxy timeout in apache error logs

于 2015-07-16T17:44:26.157 回答