Comment pouvons-nous résoudre les intermittents “Une connexion existante a dû être fermée” des erreurs causées par un Cisco CSS
Nous avons le "standard" de l'architecture à trois niveaux avec notre niveau intermédiaire hébergés dans IIS et accessibles via .net remoting. Ces erreurs se produisent entre notre site web et les serveurs des services (première rangée) qui sont d'accès à distance pour l'application des serveurs (middle tier). Nous allons obtenir cette erreur de 3 à 10 fois par jour à partir de ~130 total des appels dans la journée.
L'exception et la trace de la pile toujours ressembler à ceci:
Exception Type: System.Net.WebException
Message: The underlying connection was closed: An unexpected error occurred on a receive.
Server stack trace:
at System.Runtime.Remoting.Channels.Http.HttpClientTransportSink.ProcessResponseException(WebException webException, HttpWebResponse& response)
at System.Runtime.Remoting.Channels.Http.HttpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream)
at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at XXXXX.BusinessFacade.Interface.XXXXInterface.SubmitXXXX(
at XXX.XXXXWebServicesLibrary.XXXXService.CreateXXXXXX.RunXXXXMethod()
at XXX.XXXXWebServicesLibrary.XXXXService.XXXXXXMethod`2.RunMethod()
at XXX.XXXXWebServicesLibrary.XXXXXWebMethod`2.Run()HandleReturnMessage()
Inner Exception:
Exception Type: System.IO.IOException
Message: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)Read()
Inner Exception:
Exception Type: System.Net.Sockets.SocketException
Message: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)Receive()
Il n'y a pas particulier remoting appel qui provoque cela se produise, il peut être l'un d'eux, qui semble exclure toute sorte d'application spécifiques en cause. Le seul dénominateur commun est le "Type d'Exception: System.Net.Les Sockets.Exception socketexception Message: Une connexion existante a dû être fermée par l'hôte distant" la partie de l'erreur.
L'avant et au milieu les niveaux sont séparés par un pare-feu et nous sommes aussi en utilisant un VIP de l'appareil. Je soupçonne fortement un problème avec notre réseau/configuration du pare-feu, mais notre réseau gars sont juste gratter la tête et de ne pas offrir des suggestions.
Bien qu'un de 0,003% de taux d'échec peut paraître insignifiant, nous avons des partenaires qui scrutent nos communications très attentivement et je suis juste en attente pour que cela devienne un problème qu'ils le remarquent. Je ne veux pas avoir à dire "je ne sais pas" quand ce temps viendra.
Quelqu'un a une idée sur comment je pourrais fournir plus d'informations ou des suggestions que je pourrais faire pour notre réseau gars pour obtenir ce résolu?
Comment pouvais-je dire?
Le Processus de travail IIS peut recycler pour quelques raison : la durée de vie atteint (en minutes), le nombre de demandes a atteint, à la limite de mémoire atteint . C'est "normal" reclycling en fonction de l'IIS -piscine - configuration. Si il recycle pour une utilisation anormale de la raison, vous devriez avoir un journal des événements comme : Système>W3SVC|Attention:Un processus servant de pool d'applications 'xxx' souffert d'une communication fatale ... Pour IIS 7, la source est " A " pas "de W3SVC'.
J'ai passé en revue les journaux et je ne vois pas de quoi que ce soit.
OriginalL'auteur JohnOpincar | 2010-08-06
Vous devez vous connecter pour publier un commentaire.
Le problème était le Cisco CSS. Nous avons déterminé ce en pointant le niveau 1 serveurs directement à la phase 2 de serveurs et d'aller de 48 heures sans observer le problème. Une fois que nous avons déterminé qu'il était le CSS, nous avons corrigé ce problème en ajustant le incroyablement faible valeur par défaut pour ce paramètre:
"Flux par défaut délais d'inactivité, en secondes, pour le port TCP ou UDP. Si un flux est inactif pendant la durée spécifiée dans la valeur de délai d'expiration, le CSS, les larmes vers le bas le flux et libère les flux de ressources."
Nous avons mis cela à 84 (qui est de 84 16-seconde). Depuis le persistant par défaut pour HTTP est de 120 secondes, la valeur par défaut est bien trop faible.
OriginalL'auteur JohnOpincar
Pour vérifier le recyclage de l'Application de la piscine, allez à votre IIS et ouvrez les Propriétés du Pool d'Applications sur lequel votre service d'accès distant est en cours d'exécution.
Vous pouvez configurer le recyclage des pools d'Applications à l'aide d'un intervalle de temps, le nombre de demandes ou de définir des moments spécifiques.
Vous pouvez supprimer les actuelles règles en matière de recyclage et de définir un recyclage à un moment où aucune connexion n'est prévu, comme 3.00 nuit. Ensuite, voir si les exceptions stil se produire.
OriginalL'auteur Florian von Spiczak
Il peut être un composant d'un réseau à l'origine de ce. La façon dont la règle serait de placer les deux machines (ou des machines de test) sur le même sous-réseau, puis exécutez un test de charge, et de vérifier que vous n'obtenez pas la même erreur.
Les autres choses qui pourraient être à l'origine il pourrait être:
Qui Pare-feu et VIP appareil utilisez-vous?
Il s'avère que c'était un problème avec le Cisco CSS que nous avons eu entre nos rangs moyens et à l'équilibre de la charge. Lorsque nous l'avons signalé avant chaque serveur de niveau directement à un serveur middle tier, nous n'avons plus eu ce problème. Je vais poster plus d'informations dès qu'elles deviennent disponibles.
Salut @JohnOpincar avez-vous réussi à résoudre ce problème? Je vais avoir le même problème - d'obtenir le même message d'erreur quand nous allons à travers un programme d'équilibrage de charge, mais le problème ne se produit pas lorsque nous contourner l'équilibrage de charge et aller directement à un serveur particulier
Bruen nous n'avons pas. Nous venons d'isolé le problème de la CSS.
OriginalL'auteur Shiraz Bhaiji