WCF: Debugging WCF Throttling

Behavior:

w3wp process stops responding to the incoming request and recycling app pool fixes the problem.

 

Data Collection:

Download and Install DebugDiag from

www.microsoft.com/download/en/details.aspx?id=26798

 

Click cancel.

Go to process tab.

 

Select the w3wp process and right click and say - create full user dump

 

 

Analysis

Let us search the WCF Security context object and observe the throttling values .....

To get there, we need object of service host .....

 !dumpheap -stat

0x000007fef6a56a90         1           248  System.ServiceModel.ServiceHost

 

 

We got the Method table ...

Now let us get the address .....

0:036> !dumpheap -mt 0x000007fef6a56a90         

Using our cache to search the heap.

   Address         MT             Size  Gen

0x00000000ff66d358 0x000007fef6a56a90      248    1 System.ServiceModel.ServiceHost

 

 

Now we got the object .... let us !do it ...

0:036> !do 0x00000000ff66d358

Name: System.ServiceModel.ServiceHost

MethodTable: 000007fef6a56a90

EEClass: 000007fef6413680

Size: 248(0xf8) bytes

GC Generation: 1

(C:\Windows\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll)

Fields:

   

 

We need to find the service throttle object now .....

 

 

Analyzing the Session object ....

 

 

Solution

We need to add a Service behavior on server side and increase this value .....

msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior.aspx

 

 

<serviceBehaviors>

     <behavior name="Throttled">

     <serviceThrottling

            maxConcurrentCalls="1"

            maxConcurrentSessions="1"

            maxConcurrentInstances="1"

/>