2013-06-19 4 views
1

Надеясь, что кто-то может помочь с этим исключением. Наше клиентское приложение может создавать до трех серверных приложений (новые процессы) и обмениваться данными с каждым через TCP. Они, в свою очередь, порождают jvm при появлении запроса (серверное приложение, по существу, обертка для связи с jvm через общую память). Когда я устанавливаю память на каждом jvm примерно на 25 гб (у меня есть 8 гб бара), он не будет запускать ни одно из трех серверных приложений и не выдает исключение выше. Когда я установил его в 10gb, он запустит один из них, но выкинет это исключение, когда я попробую запустить второй jvm. Исключение появляется, когда я пытаюсь запустить jvm (выписывает заявление о регистрации непосредственно перед тем, как он делает первый вызов java), однако это исключение записывается только на стороне клиента. Мне интересно, является ли это потоком stackoverflow на стороне сервера?SocketException (0x80004005): существующее соединение было принудительно закрыто удаленным хостом

12:58:33 : Exception : System.Net.Sockets.SocketException (0x80004005): An existing connection was forcibly closed by the remote host 
Server stack trace: 
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) 
at System.Runtime.Remoting.Channels.SocketStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
at System.Runtime.Remoting.Channels.SocketHandler.ReadFromSocket(Byte[] buffer, Int32 offset, Int32 count) 
at System.Runtime.Remoting.Channels.SocketHandler.Read(Byte[] buffer, Int32 offset, Int32 count) 
at System.Runtime.Remoting.Channels.SocketHandler.ReadAndMatchFourBytes(Byte[] buffer) 
at System.Runtime.Remoting.Channels.Tcp.TcpSocketHandler.ReadVersionAndOperation(UInt16& operation) 
at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.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 Isl.RemotableObjects.ServerMgmtIF.initialiseApp(String licenseSource, OceanPluginTypeEnum type) 
at Isl.OceanShared.Server.initialise(String licenseSource) 
12:58:33 : Stacktrace: 
Server stack trace: 
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size,SocketFlags socketFlags) 
at System.Runtime.Remoting.Channels.SocketStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
at System.Runtime.Remoting.Channels.SocketHandler.ReadFromSocket(Byte[] buffer, Int32 offset, Int32 count) 
at System.Runtime.Remoting.Channels.SocketHandler.Read(Byte[] buffer, Int32 offset, Int32 count) 
at System.Runtime.Remoting.Channels.SocketHandler.ReadAndMatchFourBytes(Byte[] buffer) 
at System.Runtime.Remoting.Channels.Tcp.TcpSocketHandler.ReadVersionAndOperation(UInt16& operation) 
at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.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 Isl.RemotableObjects.ServerMgmtIF.initialiseApp(String licenseSource, OceanPluginTypeEnum type) 
at Isl.OceanShared.Server.initialise(String licenseSource) 
12:58:33 : Message : StackTrace: 
Server stack trace: 
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) 
at System.Runtime.Remoting.Channels.SocketStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
at System.Runtime.Remoting.Channels.SocketHandler.ReadFromSocket(Byte[] buffer, Int32 offset, Int32 count) 
at System.Runtime.Remoting.Channels.SocketHandler.Read(Byte[] buffer, Int32 offset, Int32 count) 
at System.Runtime.Remoting.Channels.SocketHandler.ReadAndMatchFourBytes(Byte[] buffer) 
at System.Runtime.Remoting.Channels.Tcp.TcpSocketHandler.ReadVersionAndOperation(UInt16& operation) 
at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.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 Isl.RemotableObjects.ServerMgmtIF.initialiseApp(String licenseSource, OceanPluginTypeEnum type) 
at Isl.OceanShared.Server.initialise(String licenseSource) 

ответ

2

Это произойдет, когда, как исключает исключение, удаленный хост (сервер) неожиданно закрывает соединение. Это может быть вызвано множеством причин, но обычно это связано с необработанным исключением на стороне сервера. Изучите код сервера и оттуда.

+0

Я поставил попытку поймать точку, где происходит сбоя на стороне сервера (определяется оператором трассировки до и после неудачной строки кода), но он ничего не улавливает, поэтому я принял stackoverflow. Я не совсем уверен, что происходит, когда jvm выделяет свою память, независимо от того, перегонит ли он ее при запуске jvm или просто использует ее, когда это необходимо? Судя по этому сценарию, он разбивает его и бросает какое-то неуловимое исключение. Будет ли что-то вроде wirehark поднять это и дать больше информации? – user1584120

+0

Java отличается от C#, конечно, и я приближаюсь к этому со стороны C# с небольшим знанием java runtime ... В прошлый раз я использовал его для работы в 2008-2009 годах ... Во всяком случае, я бы это себе представлял будет регистрировать такие сбои в средстве просмотра событий или в журнале внутреннего сервера приложений (я помню, что GlassFish использовал серверный журнал, например). – Haney

Смежные вопросы