Как мы можем устранить периодически возникающие ошибки «Существующее соединение было принудительно закрыто» вызванный Cisco CSS

У нас есть "стандартная" трехуровневая архитектура с нашим средним уровнем, размещенным в IIS и доступным через .net remoting. Эти ошибки возникают между нашими веб-серверами и серверами веб-служб (первый уровень), которые подключаются к серверам приложений (средний уровень). Мы получим эту ошибку 3-10 раз в день из общего количества вызовов в 130K за день.

Исключение и трассировка стека всегда выглядят примерно так:


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

There ' Нет конкретного удаленного вызова, который вызывает это, это может быть любой из них, который, кажется, исключает какую-либо конкретную причину приложения. Единственным общим знаменателем является сообщение об ошибке «Тип исключения: System.Net.Sockets.SocketException: Существующее соединение было принудительно закрыто удаленным хостом» .

Передний и средний уровни отделены межсетевым экраном, и мы также используем устройство VIP. Я сильно подозреваю проблему с конфигурацией нашей сети / брандмауэра, но наши сетевые парни просто ломают голову и не предлагают никаких предложений.

Хотя частота отказов 0,003% может показаться незначительной, у нас есть партнеры, которые очень тщательно изучают наши коммуникации, и я Я просто жду, пока это станет проблемой, которую они заметят. Я не хочу говорить "я не знаю" ищу более перспективное решение, чем простое кодирование списка .

6
задан Kornel 13 October 2015 в 13:32
поделиться