Bad performance on SOAP call

W

Werner Willemsens

Hi,

I have the following situation. COM server exposed on Windows CE 5.0 through
SOAP (SOAP toolkit)
C# client on XP calls methods on (COM)SOAP server.
The complete call takes 527msec. Why is it so much?
The SOAP method call is very simple : a COM method with 1 argument (long)
The Ethereal logging shows that the CE server side responsiveness is good,
but the XP C# client waits a very long time before he gives an ack
on the previous TCP message initiated by the CE server.
Why does it take so long on the XP side to give the acknowledge? This makes
the SOAP implementation VEEERRRYYY slow compared to for example DCOM. I can
make the
same call with DCOM in less than 2msec.

CE side = Pentium M 1.3Ghz, Windows CE 5.0
XP side = Pentium 4 2.66Ghz, Windows XP Pro SP2, .NET 2.0, WebServices 3
installed
I am not using any authentication (anonymous) or security

Ethereal trace
1 0.000000 192.168.2.40 -> 192.168.2.48 TCP [TCP segment of a reassembled
PDU]
2 0.119940 192.168.2.48 -> 192.168.2.40 TCP http > 1442 [ACK] Seq=0
Ack=307 Win=32406 Len=0
3 0.119968 192.168.2.40 -> 192.168.2.48 HTTP POST /GateWS.wsdl HTTP/1.1
4.0.120142 192.168.2.48 -> 192.168.2.40 TCP http > 1442 [ACK] Seq=0
Ack=867 Win=32580 Len=0
5 0.120677 192.168.2.48 -> 192.168.2.40 TCP [TCP segment of a reassembled
PDU]
6 0.309083 192.168.2.40 -> 192.168.2.48 TCP 1442 > http [ACK] Seq=867
Ack=185 Win=64842 Len=0
7 0.309211 192.168.2.48 -> 192.168.2.40 HTTP HTTP/1.0 200 OK
8 0.527824 192.168.2.40 -> 192.168.2.48 TCP 1442 > http [ACK] Seq=867
Ack=508 Win=64519 Len=0

CE server = 192.168.2.48
XP client = 192.168.2.40

1 = Initial call from client to server "POST /GateWS.wsdl"
2 = Acknowledge of message 1 by server
3 = Call SOAP method
4 = Acknowledge of message 3 by server
5 = "HTTP1.0 200 OK"
6 = Acknowledge of message 5 by client
7 = SOAP call response
8 = Acknowledge of message 7 by client


Werner
 
M

Martin.Kunc

Hallo Werner,
I have a suspicion of TCP window or frame in your case. Please try to
send some larger data amout first time (to 65535 bytes). I thing your
communication will be faster with send repetitions.
And just in case, I recommend you to read this:
http://www.ssfnet.org/Exchange/tcp/tcpTutorialNotes.html
which is a nice intro into TCP.

good luck, Martin
 
W

Werner Willemsens

Found solution. It has to do with Windows XP regsitry setting
TcpAckFrequency.
I changed it from 2 to 1. Now there is no additional delay
See also
http://support.microsoft.com/kb/815230
http://support.microsoft.com/kb/328890



Hallo Werner,
I have a suspicion of TCP window or frame in your case. Please try to
send some larger data amout first time (to 65535 bytes). I thing your
communication will be faster with send repetitions.
And just in case, I recommend you to read this:
http://www.ssfnet.org/Exchange/tcp/tcpTutorialNotes.html
which is a nice intro into TCP.

good luck, Martin

Werner said:
Hi,

I have the following situation. COM server exposed on Windows CE 5.0
through
SOAP (SOAP toolkit)
C# client on XP calls methods on (COM)SOAP server.
The complete call takes 527msec. Why is it so much?
The SOAP method call is very simple : a COM method with 1 argument (long)
The Ethereal logging shows that the CE server side responsiveness is
good,
but the XP C# client waits a very long time before he gives an ack
on the previous TCP message initiated by the CE server.
Why does it take so long on the XP side to give the acknowledge? This
makes
the SOAP implementation VEEERRRYYY slow compared to for example DCOM. I
can
make the
same call with DCOM in less than 2msec.

CE side = Pentium M 1.3Ghz, Windows CE 5.0
XP side = Pentium 4 2.66Ghz, Windows XP Pro SP2, .NET 2.0, WebServices 3
installed
I am not using any authentication (anonymous) or security

Ethereal trace
1 0.000000 192.168.2.40 -> 192.168.2.48 TCP [TCP segment of a
reassembled
PDU]
2 0.119940 192.168.2.48 -> 192.168.2.40 TCP http > 1442 [ACK] Seq=0
Ack=307 Win=32406 Len=0
3 0.119968 192.168.2.40 -> 192.168.2.48 HTTP POST /GateWS.wsdl HTTP/1.1
4.0.120142 192.168.2.48 -> 192.168.2.40 TCP http > 1442 [ACK] Seq=0
Ack=867 Win=32580 Len=0
5 0.120677 192.168.2.48 -> 192.168.2.40 TCP [TCP segment of a
reassembled
PDU]
6 0.309083 192.168.2.40 -> 192.168.2.48 TCP 1442 > http [ACK] Seq=867
Ack=185 Win=64842 Len=0
7 0.309211 192.168.2.48 -> 192.168.2.40 HTTP HTTP/1.0 200 OK
8 0.527824 192.168.2.40 -> 192.168.2.48 TCP 1442 > http [ACK] Seq=867
Ack=508 Win=64519 Len=0

CE server = 192.168.2.48
XP client = 192.168.2.40

1 = Initial call from client to server "POST /GateWS.wsdl"
2 = Acknowledge of message 1 by server
3 = Call SOAP method
4 = Acknowledge of message 3 by server
5 = "HTTP1.0 200 OK"
6 = Acknowledge of message 5 by client
7 = SOAP call response
8 = Acknowledge of message 7 by client


Werner
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,736
Latest member
zacharyharris

Latest Threads

Top