TCP performance problems with small data segments
- From: Amit <amitabh.nene@xxxxxxxxx>
- Date: Tue, 31 Jul 2007 00:10:42 -0700
'm trying to debug performance problems in a Win32 application that
uses a proprietary SOAP over HTTP stack. The specific problem is that
the HTTP responses sent back from the server end up waiting for ACKs
from the client, if the total size of the responses happens to be <
the MTU (which I think is 1496 bytes). For example, the following
transaction is problematic:
1. Response #1: 200 bytes (HTTP header written using a write to the
socket)
2. Delayed ACK from client of around 170ms
3. Resonse #2: 900 bytes (SOAP body + envelope written out as another
write call) -- this one seems clearly Nagled.
However if the total size of the responses exceeds the MTU, things are
just fine.
So I tried using commonly used tricks like disabling Nagle (using
setsockopt TCP_NODELAY, tweaking SO_SNDBUF, as documented at
http://support.microsoft.com/kb/214397, with absolutely no luck!
Can anyone tell what's up ?
The only unconventional thing that this app does is that it uses
sockets with overlapped IO -- I wonder if it is interacting with
TCP_NODELAY in some strange way..
On the other hand, the app's client uses the .NET ServicePoint API to
very effectively disable Nagle, so clearly the ServicePoint
implementors got it right..
-- amit
.
- Follow-Ups:
- Re: TCP performance problems with small data segments
- From: Alexander Nickolov
- Re: TCP performance problems with small data segments
- Prev by Date: Re: How to Checking a URL :Valid or Invalid
- Next by Date: Re: How to Checking a URL :Valid or Invalid
- Previous by thread: How to Checking a URL :Valid or Invalid
- Next by thread: Re: TCP performance problems with small data segments
- Index(es):
Relevant Pages
|
|