调用wcf来查询数据库,查询了几次之后程序就自动卡死,过一会儿说连接超时。一直找不到原因,后来同事说可能是wcf连接数的问题。于是找到了<serviceThrottling>这个属性。
在wcf的web.config中添加:
<serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="200" maxConcurrentInstances="400"/>
之后就可以了。附上msdn中对这个节点的介绍:
<serviceThrottling>
指定 Windows Communication Foundation (WCF) 服务的限制机制。
语法
<serviceThrottling maxConcurrentCalls="Integer"
maxConcurrentInstances="Integer"
maxConcurrentSessions="Integer" />
属性和元素
以下几节描述了属性、子元素和父元素。
属性
属性 | 说明 |
---|
maxConcurrentCalls | 一个正整数,用于限制当前在整个 ServiceHost 中处理的消息数目。 超出限制的调用会进行排队。 将此值设置为 0 与将其设置为 Int32.MaxValue 等效。 默认为 16 * 处理器计数。 |
maxConcurrentInstances | 一个正整数,用于限制在整个 ServiceHost 中一次执行的 InstanceContext 对象数。 有关创建其他实例的请求将会排入队列,并在限制范围内的槽可用时完成。 默认为 maxConcurrentSessions 和 MaxConcurrentCalls 的总和 |
maxConcurrentSessions | 一个正整数,用于限制 ServiceHost 对象可以接受的会话数。 此服务将接受超出限制的连接,但是,只有处于限制范围之内的通道处于活动状态(会从此通道中读取消息)。 将此值设置为 0 与将其设置为 Int32.MaxValue 等效。 默认为 100 * 处理器计数。 |