2

我们在 WCF 跟踪日志中收到以下错误。

系统达到了为油门“MaxConcurrentSessions”设置的限制。此限制的限制设置为 10。可以通过修改 serviceThrottle 元素中的属性“maxConcurrentSessions”或通过修改行为 ServiceThrottlingBehavior 的“MaxConcurrentSessions”属性来更改限制值

如果不使用 WCF 适配器上的自定义绑定,我们找不到修改“MaxConcurrentSessions”属性的好答案。

看了下面的文章但不想改变现有的绑定

http://msdn.microsoft.com/en-us/library/dd203050%28v=bts.10%29.aspx

还有一点:工作一段时间,当我们得到负载时,一切都会锁定

谢谢,克里希纳。

4

1 回答 1

0

您没有提及您正在使用哪个绑定,但我猜测它是WCF-wsHttpBindingbasicHttpBinding不支持 Sessions AFAIK)。

我建议您切换到 WCF-Custom,因为它有更多的配置选项。只需将绑定类型选择为 wsHttBinding,它将与 WCF-wsHttpBinding 一样工作(我们已经使用 Wcf Custom 配置了所有基本和 wsHttp 接收位置,没有任何问题,FWIW)

您需要在serviceThrottling接收位置的行为选项卡上手动添加行为。来自MSDN

在可以修改 ServiceThrottlingBehavior 服务行为的任何元素之前,您必须首先将 serviceThrottling 行为扩展添加到 WCF-Custom* 传输属性对话框的行为选项卡中。要将 serviceThrottling 添加到 Behaviors 列表中,请选择 WCF-Custom* Transport Properties 对话框的 Behaviors 选项卡,右键单击 Behavior 下的 ServiceBehavior,单击 Add extension,选择 serviceThrottling,然后单击 OK。然后单击以选择 ServiceThrottlingElement 下可用的属性,并根据需要更改属性的值。

您可能还需要同时增加maxConcurrentCallsand maxConcurrentInstances

The default recommendation in .NET 4 is at least 16*Cores, although the above link recommends >= 200 for maxConcurrentCalls.

也就是说,您可能会发现 BizTalk主机在持续一段时间的大量传入负载后开始节流,这可能会导致您所描述的感知锁定。使用 WMI 或perfmon 计数器检查主机的发布和传递限制状态,如果是这种情况,您将需要开始长期调整服务器、主机和编排以避免/限制限制的影响。BTS 主机限制对于 WCF 等同步接收是致命的,因为响应消息可能会显着延迟,导致客户端超时,并且一旦 BTS 开始处理它们,也会导致响应暂停。

于 2012-09-05T06:22:07.717 回答