httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 39849] New: - Issues with Timeout in httpd.conf and large downloads
Date Wed, 21 Jun 2006 09:01:41 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=39849>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=39849

           Summary: Issues with Timeout in httpd.conf and large downloads
           Product: Apache httpd-2
           Version: 2.2.2
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: Core
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: maarten@daemon.be


Hi,

It could be that I've identified a bug in Apache that prevents large
files from being downloaded successfully when a 'lower than default'
Timeout setting is used in httpd.conf. I sent this to the mailing list first 
and waited for 6 days, but as there was no reply I'd thought I'd open a bug 
report. 

My apologies for not yet investigating this issue in more depth and providing a 
full patch, but I just don't have the time and thought it would be better to 
report it, to help creating a better Apache, than just to ignore the issue.

A roundup of the issue:

- We publish the following file:

115120550 (size) May 22 17:21 Syllable-0.6.1-dev4.zip

When this file is downloaded, the download halts intermediately, at
around 24 MB. From the point of view of the server, it looks like the
download completed succesfully. This is the same on the client side.

This was tested and identified as an issue with Apache 1.3.24, 2.0.58
(both with added modules) and Apache 2.2.2 (clean install per bug
reporting requirements, no additional modules). This was on the same
server, running RedHat 7.1 with Apache installed from source. A test
with another Apache 2.0.58 on a separate server showed the same issue,
but at a different point in the download.

This interruption occurred on one server after approximately 7 minutes,
when the transfer had completed 24 MB. On the other server I tested,
this happened after 9 minutes, with a 20 MB completion rate. Downloads
from faster connections (less than 6 minutes of transfer time) went
smoothly and without interruption.

The issue only occurs when the Timeout parameter in httpd.conf is
lowered from its default of 300 seconds to 60 seconds. Note that this is
a common change, made to either improve performance or mitigate the
impact of certain types of denial of service attacks against the server.
When changing the value back to its default of 300 seconds the download
does complete correctly.

No entry appears in the error log, but a regular 200 request appears in
the access_log:

203.59.90.155 - - [16/Jun/2006:08:19:14 +0000] "GET
/Syllable-0.6.1-dev4.zip HTTP/1.1" 200 115120550

This was tested with Firefox, Internet Explorer and Wget, which all gave
identical results (with wget automatically retrying using a specified
byte-range so it did in fact complete the download).

Apache documentation mentions that Timeout defines the amount of time
Apache will wait for any of the following three things:

- The total amount of time it takes to receive a GET request.
- The amount of time between receipt of TCP packets on a POST or PUT
request.
- The amount of time between ACKs on transmissions of TCP packets in
responses.

I've made a PCAP file of an interrupted transfer:

http://www.daemon.be/apache-failed-down.cap

If you look at this file you can see that everything seems to go fine,
and then suddenly at frame 25947, 7.35 minutes after the connection was
established, the Apache server suddenly sends a packet with the fin,
push and ack flags set. This disrupts the connection.

As such, none of the above conditions apply: (1) a GET request was
received and is being served, (2) I don't really see any of both parties
in the transaction being unresponsive. This shouldn't match the Timeout
value. It appears somewhere in the download code the counter used to
measure this timeout isn't being increased.

If you have issues replicating it with a different file, the original
which caused us issues for quite a while prior us discovering the link
with the Timeout option can be found here:

http://www.cilinder.be/syllable/Syllable-0.6.1-dev4.zip

Cheers,
Maarten

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


Mime
View raw message