长时间运行的进程通过 Apache 代理超时,但绕过代理时不会超时

长时间运行的进程通过 Apache 代理超时,但绕过代理时不会超时

所以我有这个基于 tomcat 的 webapp。这个 webapp 的一部分允许您上传文件,然后根据后端数据库进行检查。这个过程需要很长时间,在某些情况下长达 15 分钟。现在的问题是,当我通过 apache 运行此过程时,我在 5 分钟时会超时,但当我直接在 tomcat 上运行它时不会超时。然后它变得更加奇怪,因为该过程通过 chrome 甚至通过代理都可以正常工作。然而,IE 和 FF 都会在 5 分钟时出现故障。查看网络流量,似乎客户端正在发送 TCP 断开连接并终止连接。

(总结)

直接通过 HTTP 针对 tomcat:

  • IE:很好
  • FF:很好
  • CH:很好

通过 HTTP/HTTPS 代理:

  • IE:5M 超时
  • FF:5M 超时
  • CH:很好

由于它通过 chrome 工作,我倾向于认为这是一个 IE/FF 问题。但由于它在绕过代理时通过 IE/FF 工作,我倾向于认为这是一个代理问题。无论哪种情况,我都不知所措。人们开始抱怨。所以有人知道为什么会发生这种情况吗?我很乐意发布任何必要的日志/配置文件...

我的代理配置如下:

ProxyPass /unit ajp://appserver:8100/unit 超时=1800

ProxyPassReverse /unit ajp://appserver:8100/unit

编辑:添加版本:

  • Apache 2.2.3
  • Tomcat 5.5.27
  • IE 8
  • 最终幻想4
  • Chrome 12

编辑2:添加流量样本:

这是从服务器(10.122.39.81)获取的。

17:01:49.048093 IP 10.3.0.50.10448 > 10.122.39.81.443: . 102019:103231(1212) ack 146 win 65303
17:01:49.048531 IP 10.122.39.81.443 > 10.3.0.50.10448: . ack 103231 win 65535
17:01:49.048583 IP 10.3.0.50.10448 > 10.122.39.81.443: . 103231:104443(1212) ack 146 win 65303
17:01:49.048685 IP 10.3.0.50.10448 > 10.122.39.81.443: P 104443:105633(1190) ack 146 win 65303
17:01:49.048690 IP 10.122.39.81.443 > 10.3.0.50.10448: . ack 105633 win 65535
17:05:26.337167 IP 10.3.0.50.10448 > 10.122.39.81.443: R 2183272713:2183272713(0) ack    1747376881 win 9300

如您所见,连接结束信号来自客户端,而不是服务器。通常,我只会说“好的,这是一个客户端问题”。唯一让我不这么认为的是,当直接通过端口 8001 访问 tomcat 服务器时,同样的过程是成功的。

此时,我的想法是:

  • 代理服务器配置不正确,但以某种奇怪的方式在客户端设置了超时

或者

  • 这是一个客户端问题,但由于某种原因,它只影响端口 80 或端口 443 上的流量。

相关内容