You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Duarte Meneses <du...@cern.ch> on 2014/01/23 17:21:34 UTC
[users@httpd] httpd delayed ACK
Hi,
I'm using httpd as a reverse proxy. The backend server fragments responses in 2 parts.
When clients connecting with keep-alive, the first response from the backend server is received normally, but all subsequent responses have a delay.
This delay happens because Apache is waiting around 40ms to acknowledge the first fragment from the backend server. It appears to be a bad combination of TCP delayed ACK on Apache's side and Nagle algorithm on the backend side.
Is there any way to make sure that Apache uses TCP_NODELAY or TCP_QUICKACK options in its sockets?
Here is the relevant trace of the 2nd request:
3.384012 client -> apache HTTP 166 GET /whatever HTTP/1.1
3.384136 apache -> backend HTTP 275 GET /whatever HTTP/1.1
3.387660 backend -> apache TCP 919 [TCP segment of a reassembled PDU]
3.387780 apache -> client TCP 950 [TCP segment of a reassembled PDU]
3.427353 apache -> backend TCP 68 38757 > 8081 [ACK] Seq=10144 Ack=41940 Win=116224 Len=0 TSval=1245880144 TSecr=1245880104
3.427365 backend -> apache HTTP 73 HTTP/1.1 302 Found (text/html)
3.427433 apache -> backend TCP 68 38757 > 8081 [ACK] Seq=10144 Ack=41945 Win=116224 Len=0 TSval=1245880144 TSecr=1245880144
3.427457 apache -> client HTTP 73 HTTP/1.1 302 Found (text/html)
And this is the configuration of the reverse proxy:
<VirtualHost *:80>
ErrorLog logs/reverse-error.log
ProxyPass / http://localhost:8081/ flushwait=0 flushpackets=on
</VirtualHost>
best,
Duarte Meneses
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org