Les journaux de trace de WCF montrent beaucoup "The server has hit a PollingDuplex throttle, MaxSessionsPerAddress, and cannot accept another session from this client. An http error was returned"
erreurs.
Je ne trouve pas assez de détails sur MaxSessionsPerAddress
les paramètres, je viens de trouver ce poste qui dit que MaxSessionsPerAddress
c'est toujours 10
et ne peut être modifié.
Je pense simplement que ce problème peut être lié à une logique de tolérance aux pannes que j'ai mise en œuvre pour le proxy client qui, avec un certain délai d'attente, entraîne un tel problème : En cas d'échec du canal, le proxy client WCF ferme un canal (Close() puis Aboort() dans try/catch) et essaie ensuite de se reconnecter toutes les 5 secondes, N tentatives. Peut-être un client n'était pas capable de se connecter même après 10 tentatives ce qui a créé 10 sessions sur un service donc toutes les tentatives suivantes ont été refusées ?
Informations générales :
- Connexion polluanteDuplex
- Impossible de reproduire ce problème, car il a été observé une fois dans un environnement réel, puis désactivé pour ne pas affecter les utilisateurs.
- Le journal IIS HTTPERR comporte plusieurs entrées Connection_Abandoned, Connection_Dropped pour un service qui a échoué.
Client WCF :
- Silverlight4
- ClientPollTimeout=5min
- InactivityTimeout=24h, SendTimeout=30min, CloseTimeout=3min
- ReceiveTimeout=24h, OpenTimeout=3min
Serveur WCF :
- IIS hébergé
- InstanceContextMode = PerSession
- ConcurrencyMode = Multiple
- maxConcurrentCalls, maxConcurrentSessions, maxConcurrentInstances sont fixés à 500
- HttpBinding, httpTransport, PollingDuplexBindingElement, DuplexChannelFactory
- sendTimeout="00:30:00", receiveTimeout="24:00:00", openTimeout="00:10:00", closeTimeout="00:10:00"
- maxOutputDelay="00:00:01", inactivityTimeout="24:00:00", serverPollTimeout="00:02:00"
- maxReceivedMessageSize="1073741824", maxBufferSize="1073741824", MaxBufferPoolSize="2147483647"
Toute aide est la bienvenue !