У нас есть «стандартная» трехуровневая архитектура с нашим средним уровнем, размещенным в 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()
Нет конкретного удаленного вызова, который бы вызывал это, это может быть любой из них, который, по-видимому, исключает какую-либо конкретную причину приложения.Единственным общим знаменателем является часть сообщения об ошибке «Тип исключения: System.Net.Sockets.SocketException: Существующее соединение было принудительно закрыто удаленным хостом» .
Фронт ипромежуточные уровни разделены межсетевым экраном, и мы также используем устройство VIP.Я сильно подозреваю, что проблема с конфигурацией нашей сети / брандмауэра, но наши сетевые парни просто ломают голову и не предлагают никаких предложений.
Хотя частота отказов 0,003% может показаться незначительной, у нас есть партнеры, которые очень внимательно изучают наши коммуникацииосторожно, и я просто жду, пока это станет проблемой, которую они заметят.Я не хочу говорить «я не знаю», когда наступит это время.
Есть ли у кого-нибудь какие-либо идеи о том, как я мог бы предоставить больше информации или какие-либо предложения, которые я мог бы сделать нашим сетевым парням, чтобырешить эту проблему?