Groups | Blog | Home
all groups > dotnet performance > september 2006 >

dotnet performance : Partial serialization while invoking soap calls


Eran
9/5/2006 12:23:55 AM
Hi,


I have a Soap web service (.NET 2.0) on machine Y.
I have a tester program on machine X invoking calls on Y. X is
multithreaded, and I test the performance on Y calling 1,3,5,10,30
users.

I keep getting a strange phenomenon, maybe someone can put some light
on: *most* threads are invoked simultaniously, but some are searialized
and start only after other threads ended.
When I run 30, 27-30 start together, when I run 10 - 7-10 run together
etc.

It doesn't seem like a problem in the client (I've increased any
maxconnection and maxthreads parameters on the machine.config and
app.config. I couldn't find anything on the server as well (it doesn't
reach high resources in anything).
Even when I run the client from the same machine, the phenomenon
happens (though more rarely).

I use perfmon on the server, and the counter 'ASP.NET' -> 'Requests
Current' shows the amount of parallel requests running, and shows the
problem. When I run 10 and it shows 8, 2 requests will start much later
on the server. However, I can't see them queued anywhere. (The requests
Queued' is 0).

The most bizare thing is that it happens sometimes even with 2 requests
(though the capacity of the server is much much much higher than 1).

Any ideas?
Calvin Luttrell
9/9/2006 8:02:06 PM
Eran,

That's a hard one for me to answer off the top of my head but even
multithreaded application still only runs one thread a time technically
depending on your processor. It really has to do with the work flow with in
the application and if other threads are keeping the interface updated etc.
If you're using the application pool in .Net it's going to operating in the
most optimal manner in my experience. Unless your really push the requests I
could see it processing them serially just because it's optimum. Dual
processor machines are more likely to be able to process multiple threads
truly at one time.

Calvin Luttrell

How e-commerce is done.

http://blog.projectthunder.com
http://www.projectthunder.com




[quoted text, click to view]

Eran Dvey-Aharon
9/10/2006 6:26:01 AM
Calvin,

Thanks for your post.
However, this issue is not related to the machine limits. When I run 30
threads, each creating a SOAP request to my site, I can see 26-27 of them
(typically) running together, and the rest serialized. When I run only 5-10
threads, same phenomena occurs (though the throuput of the system didn't
change - it can run 26-27 if it *wants* to....)

AddThis Social Bookmark Button