gpt4 book ai didi

.net - .NET Remoting 中出现 "Tcp channel protocol violation expecting preamble"的原因是什么?

转载 作者:行者123 更新时间:2023-12-01 16:17:55 25 4
gpt4 key购买 nike

我有一个分布式应用程序,它在内部千兆位网络上使用 .NET Remoting。有一个服务器,以及连接到该服务器的十多个客户端。客户端运行多个线程,每个客户端最多可以有 10 个并发请求。

该应用程序在大多数情况下都运行良好。服务器一次可以运行数月。有时我会在客户端上遇到异常,但我无法弄清楚是什么导致了异常。异常和堆栈跟踪是:

System.Runtime.Remoting.RemotingException: Tcp channel protocol violation: expecting preamble.

Server stack trace:
at System.Runtime.Remoting.Channels.Tcp.TcpSocketHandler.ReadAndMatchPreamble()
at System.Runtime.Remoting.Channels.Tcp.TcpSocketHandler.ReadVersionAndOperation(UInt16& operation)
at System.Runtime.Remoting.Channels.Tcp.TcpClientSocketHandler.ReadHeaders()
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)

这是我进行远程处理调用的堆栈跟踪。

我已经查看过,在我正在进行的调用或服务器返回的数据中没有发现任何异常情况。

Google 搜索此错误的结果并不多。我见过的大多数错误都与某人从 HTTP 转换为 TCP 并且没有更改所有内容有关,因此他们在尝试连接时会遇到异常。就我而言,客户端将运行,然后才会出现此错误。

另一个数据点:服务器确实收到了大量请求。大多数客户端都是网络爬虫,每分钟向服务器发出超过 2,000 个请求。因此,服务器每秒处理超过 500 个请求,并且流量会突然增加。无论如何,服务器似乎可以很好地处理流量,如果服务器过载,我预计会出现截然不同的错误。

有什么想法导致此错误吗?

最佳答案

当收到带有错误 header 的消息时,通常会发生此错误。您可以通过创建到服务器的 telnet 连接并输入一些内容来重复此错误。大多数情况下是网络错误。

我强烈建议检查您的防火墙。一些防火墙由于错误的攻击警报而丢弃网络数据包。

负载平衡是另一个可能的原因。负载均衡器将数据包拆分到不同的服务器。

关于.net - .NET Remoting 中出现 "Tcp channel protocol violation expecting preamble"的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3603431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com