Long running time of WCF web services on the same server

Even if this question is a year old, I am still looking for a good answer to this question. I appreciate any information that will allow me to fully understand this problem in relation to the poor transmission performance of web services hosted on the same computer.

I am currently developing a system with several WCF web services that communicate intensively. They run IIS7 on a single machine, with each service in a different application pool with multiple workers in the Web Garden.

By individually evaluating each web service, I can execute 10,000-20,000 requests per minute, quickly and without any issues for resource consumption (CPU and memory).

When I test the entire system or just a subsystem formed by two web services, I cannot serve more than 2000 requests / minute. I also noticed that web service communication time is a big issue (sometimes over 10 seconds). But when testing only 1000 requests per minute, everything goes smoothly (connection time no more than 60ms). I tested the system with both SOAPUI and JMETER, but times were calculated based on syslogs and not from testing tools. Memory and network are not a problem (they are used very little).

I later tested the performance of two WCF communication web services hosted on two servers and one server. Again there seems to be a bottleneck when the services are on the same machine, dropping the number of connections from ten thousand to thousands; again, there is no memory or processor limit.

As a side note, I am working with quite large data in some cases and some of the operations required are long.

I've used perf.mon to see what's going on, for memory, processes, webservice, aspnet, etc., but I haven't seen anything to indicate what's going on. I also tried every performance tweak and tweak I could find on the internet.

Does anyone know what could be wrong? Why can communication between web services take so long? Why is a web service that serves as an entry point to the system can accept 10,000 requests per minute when one is tested, but when you talk to another web service it barely accepts 2,000? Is this an IIS7 problem? Can my system perform better if each web service is deployed on a different server?

I want to better understand how internals (IIS and WCF) improve performance for current and future systems.


source to share

1 answer

You can try to collect data from WCF performance counters: concurrent calls, instances, duration, ... Also, throttling WCF provides some properties that you can use to limit the number of instances or sessions at the application level. The performance of a WCF service can be improved by creating a proper instance. Finally, when testing load, there are many configurations to apply to different components: maximum concurrent HTTP connection, IIS constraints having many boot clients ... You lose your test result because of this.



All Articles