Board index » delphi » SOAP client slow to receive large data packets
Dan Barclay
![]() Delphi Developer |
SOAP client slow to receive large data packets2008-01-11 08:14:00 AM delphi208 I'm using a SOAP connection to a 3rd party server and it functionally working fine. I imported the wsdl and built a test panel. While it's working, it is very slow. Delphi 2007 Enterprise. The object is extremely simple: Send a data payload, get one back. The payload is XML itself which, when you see it on the line is neutered into a big string by using >, < and friends. Bottom line is that the SOAP conversation is sending a little string, receiving a big string. All works well except the speed. I initially thought the server was just slow (30 seconds typical on one response that sends about 300 bytes and receives about 170k bytes). However, when I hooked up ethereal I find that the server response starts very quickly (subsecond to a couple of seconds). All the rest of the time is spent receiving the response packet. Typical of the cycle on the line is to get a packet from the server and Ack it, get another packet from the server, etc. Straightforward enough, but the delay between getting a packet from the server and the Ack being sent back is between 150 and 200 milliseconds! What the heck is going on during that time? Contrast that with the server response... from the time the ack is sent to receiving the next packet with a 1.5k payload from the remote server is maybe 10 milliseconds. The end result is that receiving 170k of data takes 30 seconds, almost all of it being spent by the client machine. I've tinkered with the mtu (I'm also seeing "reassembled PDU" messages), having changed to to various values even as low as 150, but this delay seems to actually be some processing by the client. Is there some setting I am missing? Thoughts? Thanks, Dan |