系统采用生产者-消费者模式,一个manager里面有个队列,然后定时200ms从队列中吐出data发给集群,通信是采用的.net remoting. 服务端集群计算有性能瓶颈(这个受其他系统限制克服不了,平均计算要7,8秒的样子)。本地测试没有问题,但是在生产系统每次跑一段时间斗湖出现以下异常:
System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭了一个现有的连接。
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)
但是telnet服务端没问题,服务端并没有down掉,求高人解答~~
服务端的实现耗时多少?
上面说了,因为要查其他接口,耗时一般都是好几秒。
而且服务端集群那边会调用一个SOA接口,服务端这边线程比较多的话,查SOA的latency也会比较大