我正在一个有 800 个客户端(详细客户端)的服务器上进行一些 wcf 跟踪,并且我看到在处理操作“ http://tempuri.org/IConnectionRegister/ValidateUriRoute ”之后很多 SocketConnection 中止。这是在 ** ** 活动期间
我删除(最大化)所有可能的限制(绑定、服务、端口共享(在自定义绑定和 SMSvcHost.exe 上)。仍然有很多随机超时和套接字中止。
0000 活动也绝对满(少于每秒)
“套接字连接已中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或底层网络资源问题造成的。本地套接字超时为 ' 10675199.02:48:05.4775807'。”
“由于线程退出或应用程序请求,I/O 操作已中止”
在确定谁导致连接断开时,任何帮助将不胜感激。
如果有人感兴趣,我还可以上传示例 svc 跟踪。
Socket Connection Abort 的堆栈跟踪
System.ServiceModel.Channels.SocketConnection.Abort() System.ServiceModel.Channels.TracingConnection.Abort() System.ServiceModel.Channels.InitialServerConnectionReader.Abort() System.ServiceModel.Channels.ServerSessionPreambleConnectionReader.OnValidate()
……
System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame() System.Runtime.AsyncResult.Complete() System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.OnReceive() System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame() System.Runtime.AsyncResult。 Complete() System.ServiceModel.Channels.SynchronizedMessageSource.ReceiveAsyncResult.OnReceiveComplete()
<customBinding>
<binding name="externalRoutingcustomBinding">
<binaryMessageEncoding>
</binaryMessageEncoding>
<security
authenticationMode="UserNameOverTransport"
allowInsecureTransport="true"
enableUnsecuredResponse="true"
>
</security><tcpTransport>
<connectionPoolSettings groupName = "default" maxOutboundConnectionsPerEndpoint = "1000"/>
</tcpTransport>
</binding>
<service name="ZPRoutingWorkflow.ZpRoutingService">
<endpoint address="Transactions" binding="customBinding" bindingConfiguration="externalRoutingcustomBinding"
name="Transactions" contract="TopUpInterface.ITransactionsService">
<identity>
<dns value="appserver.test.com" />
</identity>
</endpoint>
<endpoint address="Retry" binding="customBinding" bindingConfiguration="externalRoutingcustomBinding" name="Retry" contract="IRetryInterface.IRetryService">
<identity>
<dns value="appserver.test.com" />
</identity>
</endpoint>
配置总结:
在 iis 中托管的同一端口上的多个 net.tcp 服务。其中一项服务是实现 IRequestReplyRouter 的路由服务。基本上所有消息都通过路由器,路由器在内部连接到服务并将消息传递给它们