Wie können wir troubleshoot intermittierende „Eine bestehende Verbindung wurde gewaltsam geschlossen“ Fehler durch einen Cisco CSS verursacht

StackOverflow https://stackoverflow.com/questions/3426885

Frage

Wir haben die „Standard“ Drei-Schichten-Architektur mit unserer mittleren Ebene in IIS gehostet und über .NET Remoting abgerufen. Diese Fehler treten zwischen unseren Web und Web Services-Server (vordere Reihe), die mit dem App-Server Remoting (mittlere Stufe). Wir werden diesen Fehler 3-10 mal am Tag von ~ 130K aller Anrufe in den Tag.

Die Ausnahme und Stack-Trace immer ähnlich aussehen:


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()

Es gibt keinen bestimmten Remote Anruf, der dies bewirkt, dass das geschehen kann, kann es einer von ihnen sein, die jede Art von anwendungsspezifischen Ursache auszuschließen scheint. Der einzige gemeinsame Nenner ist der „Ausnahmetyp: System.Net.Sockets.SocketException Nachricht: Eine vorhandene Verbindung wird vom Remotehost geschlossen“. Teil des Fehlers

Die vordere und mittlere Ebene sind durch eine Firewall getrennt, und wir sind auch ein VIP-Gerät verwendet wird. Ich dringend ein Problem mit unserem Netzwerk vermuten / Firewall-Konfiguration, aber unser Netzwerk Jungs sind nur am Kopf kratzen und keine Vorschläge an.

Obwohl eine 0,003% Ausfallrate unbedeutend erscheinen mag, wir Partner haben, die unsere Kommunikation sehr sorgfältig prüfen und ich warte nur für dieses Problem werden sie bemerken. Ich will nicht, „ich weiß nicht“ zu sagen haben, wenn die Zeit kommt.

hat jemand irgendwelche Ideen, wie ich weitere Informationen oder Anregungen liefern konnte ich zu unserem Netzwerk Jungs machen könnte dieses Problem gelöst werden?

War es hilfreich?

Lösung

Das Problem war die Cisco CSS. Wir stellen fest, dies durch das Tier-1-Server direkt mit dem Tiere zeigen 2 Server und gehen 48 Stunden, ohne das Problem zu beobachten. Sobald wir es war die CSS bestimmt, korrigierten wir dieses Problem durch den irrsinnig niedrigen Standardwert für diesen Parameter eingestellt:

„Default Flow Inaktivität Timeouts in Sekunden an, für die TCP oder UDP-Port. Wenn ein Fluss für die Zeit, in dem Timeout-Wert angegeben im Leerlauf ist, reklamiert die CSS Tränen aus der Strömung und die Strömungs Ressourcen.“

Wir setzen diese auf 84 (die 84 16-Sekunden-Schritten). Da die Standard-Keep-Alive für HTTP 120 Sekunden ist, war der Standardwert zu niedrig ist.

Andere Tipps

Zur Überprüfung des Anwendungspools gehen auf Ihre IIS Recycling und öffnen Sie die Eigenschaften des Application-Pool, auf dem Ihr Remoting-Dienst ausgeführt wird. Sie können ein Zeitintervall verwenden, Anzahl der Anfragen Recycling von Anwendungspools konfigurieren oder bestimmte Zeiten zu definieren.

Sie können die aktuellen Recycling-Regeln entfernen und ein Recycling auf eine Zeit eingestellt, wo keine Verbindungen zu erwarten sind, wie 3.00 in der Nacht. Dann sehen, ob die Ausnahmen STIL auftreten.

Es könnte eine Netzwerkkomponente verursacht dies sein. Die Art und Weise dies auszuschließen wäre beide Maschinen zu platzieren (oder Prüfmaschinen) im selben Subnetz, dann einen Belastungstest ausführen, und stellen Sie sicher, dass Sie nicht den gleichen Fehler haben.

Die anderen Dinge, die es sein könnte verursachen könnten:

  • Ein Timeout, versuchen Sie die Timeout-Werte zu erhöhen
  • Eine zu große Nachrichtengröße, versuchen Sie die Größe der Nachricht erlaubt zu erhöhen, auch Größe der Anfrage in IIS erlaubt
  • Sie könnten etwas Maximalwert, wie max Anrufe oder max Verbindungen schlagen werden sehen: http://msdn.microsoft.com/en-us/library/ee377061 (v = bts.10) aspx
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top