所以我有这个基于 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 上的流量。