I have Apache 2.2.11 installed locally on my Windows XP (SP3) dev machine, which I setup about 3 months ago.
I have just started having a strange problem in the last few week.
Apache is serving some basic PHP applications like phpMyAdmin. When I make a page request, Apache appears to not finish serving all resources for that page. Firefox shows the "Transferring data from servername..." message, and the page never completes. The same problem happens in Internet Explorer too.
I can sometimes tell which resource it is waiting on, because most of the page will render except for some image or similar resources. (Not sure why Firebug doesn't show this)
It doesn't have the problem every page request - for page requests where most of the resources are cached in my browser, the page request will work with no problems. Or pages that are very light will work with no problems.
However, if I "hard" refresh the page, I will have this problem (probably because it is requesting all page resources)
Does anyone know what this could be?
It is so strange that it has only just started happening - and I did not make any changes to my system (that I am aware of)
I tried playing with the Apache ThreadsPerChild setting, but it did not seem to make a difference.
I have been doing some more tests. I have been serving the most basic of pages, just a plain HTML file:
If I request this page multiple times in a row, AND each request occurs immediately after the previous has completed, then 50% of the time the request will time out.
However, if I put a 1-2 second gap between requests, then there is no problem.
This correlates to what I have observed when the brower requests a real application page. When the browser has nothing cached, then all of the page resources are requested from the browser in a short amount of time - this appears to trigger the problem.
Nathan Long has helped me understand the issue a little better with the server-status page (see below).
It is weird, it is like the server has a hickup sending data to the client. The client sits there waiting forever for data that never arrives. Closing the client process does not terminate the connection on the server - the server still has active threads for each previously attempted connection, but they just sit there - not sending any data and never terminating. (even though the client is now closed) Only a restart of the server seems to terminate them.