Friday, June 28, 2013

WCF Performance Engineering.

It starts with converting a specification into running model and then time passes, gradually with many changes the system becomes cumbersome due huge data .Time comes when system start falling apart. We try to cut corners where things needs changes end up doing something very worse. Well to cut long story short..Here I m talking about the performance improvement that requires revisit and too be looked very carefully. I have been working with the team where they faced issues related to time out, memory leakage or stack overall etc. These all boils down to design which is not profound or not taken factors such as performance, scalability, security etc. But to get these factors in place there is trade-off between them.

Quick Key factors that we should look at high level.
1. Check the design has chatty communication. Too many server calls, wcf calls via sql DB calls. etc..
Reduce them bulk calls if possible.

2. Check the IIS level configuration such as App Pool Overlap recycle, worker processor thread, etc.
http://msdn.microsoft.com/en-us/library/ee377050.aspx
3. First more most thing, do profiling of code, optimize code that is there.

3. BasicHttpBinding vs WShttpBinding
Check your design and end objective choose among them appropriately.

4. Check for WCF throttling. ConcurrentInstance, Concurrentsession and ConcurrentRequest.

http://blogs.msdn.com/b/distributedservices/archive/2010/03/23/wcf-services-appear-hung-due-to-maxconcurrentsessions-limit-being-hit.aspx

http://blogs.msdn.com/b/wenlong/archive/2009/02/08/why-only-two-concurrent-requests-for-load-testing.aspx

http://blogs.msdn.com/b/rickrain/archive/2009/06/26/wcf-instancing-concurrency-and-throttling-part-3.aspx

http://msdn.microsoft.com/en-us/library/vstudio/hh323713(v=vs.100).aspx



maxConcurrentInstances="200" maxConcurrentSessions="200" />
 
 

No comments :