我们在WCF tracelog中收到以下错误。
系统达到了限制设置的限制'MaxConcurrentSessions'。此限制的限制设置为10.可以通过修改serviceThrottle元素中的属性'maxConcurrentSessions'或通过修改行为ServiceThrottlingBehavior上的'MaxConcurrentSessions'属性来更改节流值
如果不在WCF适配器上使用自定义绑定,我们找不到修改“MaxConcurrentSessions”属性的好答案。
查看了以下文章,但不想更改现有的绑定
http://msdn.microsoft.com/en-us/library/dd203050%28v=bts.10%29.aspx
还有一点:工作一段时间,因为我们得到了负载,然后一切都锁定了
谢谢, 克里希纳。
答案 0 :(得分:0)
您没有提到您正在使用哪种绑定,但我猜测它是WCF-wsHttpBinding
(basicHttpBinding
不支持会话AFAIK)。
我建议您切换到WCF-Custom,因为它有更多配置选项。只需选择绑定类型为wsHttBinding,它将与WCF-wsHttpBinding相同(我们已经使用Wcf Custom配置了所有基本和wsHttp接收位置,没有任何问题,FWIW)
您需要在接收位置的“行为”标签上手动添加serviceThrottling
行为。来自MSDN
在ServiceThrottlingBehavior服务的任何元素之前 可以修改行为,必须先添加serviceThrottling 行为扩展到WCF-Custom * Transport的“行为”选项卡 属性对话框。将serviceThrottling添加到列表中 行为,选择WCF-Custom * Transport的“行为”选项卡 在“属性”对话框中,右键单击“行为”下的“ServiceBehavior”, 单击“添加扩展”,选择“serviceThrottling”,然后单击“确定”。然后 单击以选中下面的可用属性 ServiceThrottlingElement并将属性的值更改为 需要的。
您可能还需要同时增加maxConcurrentCalls
和maxConcurrentInstances
。
.NET 4中的默认建议至少为16*Cores,尽管以上链接建议maxConcurrentCalls
使用> = 200。
也就是说,您可能会发现BizTalk 主机限制在持续一段时间的大量传入负载后启动,这可能会导致您所描述的感知锁定。使用WMI或perfmon counters检查主机的发布和交付限制状态,如果是这种情况,则需要在tuning服务器,主机和业务流程中开始长期运行以避免/限制节流的影响。 BTS主机限制对于像WCF这样的同步接收是致命的,因为响应消息可能会显着延迟,导致客户端超时,并且一旦BTS确实处理它们,也会导致响应被暂停。