C# 检测WCF节流

C# 检测WCF节流,c#,wcf,throttling,C#,Wcf,Throttling,是否有办法查看是否已到达WCF MaxConcurrentSessions或MaxConcurrentCalls 我们有一个WCF服务,有许多操作。大多数是请求/响应,但有一种是长轮询方法,除非服务器端发生什么情况,否则它会在很长时间后返回 它用于从WCF服务近乎实时地向客户端发送通知。如果什么也没有发生,该方法会在一段时间后返回一条超时消息,客户端将再次调用该方法以轮询新通知 服务正在以InstanceContextMode=InstanceContextMode.Single、Concurr

是否有办法查看是否已到达WCF MaxConcurrentSessions或MaxConcurrentCalls

我们有一个WCF服务,有许多操作。大多数是请求/响应,但有一种是长轮询方法,除非服务器端发生什么情况,否则它会在很长时间后返回

它用于从WCF服务近乎实时地向客户端发送通知。如果什么也没有发生,该方法会在一段时间后返回一条超时消息,客户端将再次调用该方法以轮询新通知

服务正在以InstanceContextMode=InstanceContextMode.Single、ConcurrencyMode=ConcurrencyMode.Multiple的形式运行

单个实例是由于实时通知-它们通过UDP从另一个系统接收,WCF服务绑定到本地UDP端口,因此它可以侦听通知,并将其传递给等待的客户端

我们检测到MaxConcurrentSessions和MaxConcurrentCalls的默认设置对于使用该服务的活动客户端数量来说太低。它们似乎会阻止每个长轮询请求的会话或调用,这意味着请求/响应请求会被阻止,直到轮到它们为止

我们希望继续使用长轮询模式-由于防火墙遍历问题,双向绑定或直接TCP是不可能的。当然,我们可以将MaxConcurrentSessions和MaxConcurrentCalls的值增加到MAXINT或类似值,但我不喜欢这种方法。
相反,我希望将值增加到合理值,并能够检测是否达到上限。

看看这是否有帮助。谢谢。性能计数器绝对可以使用。我们可以监视一个名为“最大并发调用百分比”的计数器。