views:

96

answers:

2

I have an MVC application that calls several different web services. While running load tests on the application, I noticed that performance (both throughput and response times) degraded quickly as the concurrent users increased. By process of elimination, I stripped everything out except for a single dummy call to the web service which just returns an empty object and produces a tiny bit of html.

Hitting that test page from another server (using Pylot) with 100 concurrent users, I peak at around 9,000 requests per minute. By comparison, a static html (~70k) peaks at around 20,000 requests per minute. I also created another test page that calls another service (running Solr) and peak at 18,000 requests per minute for a simple query.

I know that it's hard to interpret much from these "results", so I'm looking for any information on how to tune a WCF Web Service for optimum performance under load.

+1  A: 

I did a bunch of performance work on our WCF services a while back, mainly in terms of increasing the level of currency going through our app. I put the stuff I learnt in a blog post which hopefully you will find useful:

http://theburningmonk.com/2010/05/wcf-improve-performance-with-greater-concurrency/

Also, check out the links to Dan Rigsby and Scott Weinstein blog posts at the bottom of the page, they did some really good posts some time ago on improving WCF performance too which I found really useful.

theburningmonk
A: 

Unless you provide more detail I can't be sure, but are you running out of process space in MVC or in WCF? You could easily run out of processing space in MVC if you are not using an MVC AsyncController. Issuing an WCF request will consume the IO thread of the UI and block / queue other calls after thresholds have been met.

Terrance A. Snyder