Sono in fase di risoluzione dei problemi relativi a un servizio WCF che si blocca in un determinato momento. Il comportamento di servizio è il seguente:WCF: maxConcurrentCalls ha esaurito
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple)]
parametri di limitazione sono:
<serviceThrottling maxConcurrentCalls="50" maxConcurrentSessions="50" maxConcurrentInstances="50" />
seguito è lo stato di servizio preso da una discarica appendere:
0:000> !mdt 0000000000c9f270 -r
0000000000c9f270 (System.ServiceModel.Dispatcher.ServiceThrottle)
calls:0000000000c9f3d8 (System.ServiceModel.Dispatcher.FlowThrottle)
capacity:0x32 (System.Int32)
count:0x32 (System.Int32)
mutex:0000000000c9f418 (System.Object)
<NO FIELDS>
release:0000000000c9f398 (System.Threading.WaitCallback)
_target:0000000000c9f270 (System.ServiceModel.Dispatcher.ServiceThrottle)
<RECURSIVE>
_methodBase:NULL (System.Reflection.MethodBase)
_methodPtr:0000064273dddf30 (System.IntPtr)
_methodPtrAux:0000000000000000 (System.IntPtr)
_invocationList:NULL (System.Object)
_invocationCount:0000000000000000 (System.IntPtr)
<NO FIELDS>
waiters:0000000000c9f430 (System.Collections.Generic.Queue`1[[System.Object, mscorlib]])
_array:0000000028d73e70 (System.Object[], Elements: 16)
_head:0x1 (System.Int32)
_tail:0xA (System.Int32)
_size:0x9 (System.Int32)
_version:0x22 (System.Int32)
_syncRoot:NULL (System.Object)
propertyName:0000000000c9f2b8 (System.String: "MaxConcurrentCalls")
configName:0000000000c9f358 (System.String: "maxConcurrentCalls")
sessions:0000000000c9f508 (System.ServiceModel.Dispatcher.FlowThrottle)
capacity:0x32 (System.Int32)
count:0x9 (System.Int32)
....
instanceContexts:000000000105ffc8 (System.ServiceModel.Dispatcher.FlowThrottle)
capacity:0x32 (System.Int32)
count:0x32 (System.Int32)
Come si può vedere, maxConcurrentCalls ha esaurito, mentre il conteggio delle sessioni è solo 9. Mi chiedo se questo potrebbe essere causato da un malfunzionamento nel codice client su proxy utilizzo, come la scarsa gestione delle eccezioni?
Dato un dump della memoria del servizio, esiste un modo per trovare gli indirizzi IP dei client?
TIA.
Ciao, ho un problema simile (si veda http://stackoverflow.com/questions/20842923/wcf-maxconcurrentsessions-exceeded). Potresti fornirmi ulteriori informazioni sulla tua soluzione e sulla tecnica di debug? Grazie! –