So I have this tomcat based webapp. Part of this webapp lets you upload a file that then is checked against a backend database. This process takes a long time, up to 15 minutes in some cases. Now the rub is that I'm getting timeouts at the 5 minute mark when I run this process through apache, but not when I run it directly against tomcat. And then it gets even stranger because the process works fine through chrome even through the proxy. IE and FF choke on it though, both at the 5 minute mark. Looking at the network traffic, it looks like the client-side is sending the TCP disconnect and killing the connection.
Directly against tomcat via HTTP:
- IE: Good
- FF: Good
- CH: Good
Through the proxy via HTTP/HTTPS:
- IE: 5M timeout
- FF: 5M timeout
- CH: Good
Since it works via chrome, I'm tempted to think it's an IE/FF issue. But since it works via IE/FF when bypassing the proxy, I'm inclined to think it's a proxy issue. And in either case, I'm stumped. And people are starting to murmur. So anyone have any thoughts about why this is happening? I'm happy to post any necessary log/conf files...
My Proxy is config'd as follows:
ProxyPass /unit ajp://appserver:8100/unit timeout=1800
ProxyPassReverse /unit ajp://appserver:8100/unit
EDIT: Adding versions:
- Apache 2.2.3
- Tomcat 5.5.27
- IE 8
- FF 4
- Chrome 12
EDIT 2: Adding Traffic Sample:
This was taken from the server (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
As you can see, the end of connection signal comes from the client, rather than the server. Normally, I would just say "ok, this is a client-side issue". The only thing that keeps me from that is the fact that the same exact process is successful when accessing the tomcat server directly via port 8001.
At this point, My thoughts are:
- Proxy server isn't configured properly but in some strange way that sets a timeout on the client side
- It's a client-side issue, but for some reason it only affects traffic over port 80 or port 443.