Bret and Robert, I would suggest that getting a packet trace is the next
step in tracking down your performance problem. If you don't already have
such a tool, Ethereal is a top notch open-source tool for this which is
distributed with linux, but also freely available for windows and mac at
www.ethereal.com. I would capture and compare two downloads, one fast and
one slow, keeping as many other variables the same as possible. From the
test scenarios Robert outlined, I would suggest comparing tomcat/jk2/IIS6
<--> w2k/IE6 with tomcat/jk2/IIS6 <--> wXP/IE6.
When you compare them, here are the kind of things I would look for:
1. Is there some kind of lengthy exchange happening in one that is not in
the other?
2. Is the connection failing repeatedly and being automatically retried by
the client?
3. Are a lot of packets getting resent in one, i.e. failing to be
acknowledged in a timely fashion?
4. Is the process just running slower, and if so, who is slowing it down?
(all the packets are timestamped. It's pretty easy to see if the server
is slow to send the response, and/or send additional packets when others
in the window have been ACKed by the client, or to see if the client is
slow to ACK packets, and so the server, once it's window is full, must
wait for the client before it can send more.)
5. Is there anything different about the headers exchanged, other than the
platform indicated in the User-Agent header.