首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wcf服务长时queuing请求等待会导致后续请求的排队。

wcf服务长时queuing请求等待会导致后续请求的排队。
EN

Stack Overflow用户
提问于 2017-05-05 21:16:33
回答 2查看 175关注 0票数 0

我有一个在functionA中在外部服务中对functionX进行HttpWebRequest调用的WCF服务。最初,此minutes请求的超时设置为5分钟。

最近,外部服务花了超过5分钟才做出回应(我对此很满意)。所以我把httpWebRequest.timeout撞到了10分钟。

同时,wcf服务应该能够处理其他传入请求(对functionB、functionC等)。我现在所经历的是,如果functionX响应时间超过5分钟(因此functionA需要超过5分钟才能完成),那么在wcf服务中对functionB的后续请求将排队/直到functionA完成。

最后,一切都正常完成,但我不明白为什么functionB会受到functionA中正在发生的等待的影响。

如果这很难理解,请原谅我。这是一个奇怪的,我有困难,我的头围绕着这些东西是如何相关的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-07 14:44:37

必须用以下属性装饰WCF服务类

代码语言:javascript
复制
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)] // The service instance is multi-threaded.
public class Service1
{
   // ...
}

我假设您的并发模式被设置为单一模式,由Microsoft定义如下。

“服务实例是单线程的,不接受重入调用。如果System.ServiceModel.ServiceBehaviorAttribute.InstanceContextMode属性是System.ServiceModel.InstanceContextMode.Single,,并且在实例服务调用时附加消息到达,这些消息必须等到服务可用或消息超时。”

票数 1
EN

Stack Overflow用户

发布于 2017-05-06 04:10:21

我也有同样的问题。我在IIS中承载了我的服务。经过很少的搜索,我发现它是因为maxconnection在web配置中的限制。我将这一行添加到我的web.config中,问题解决了:

代码语言:javascript
复制
<system.net>
    <connectionManagement>
        <add address="*" maxconnection="1000"/>
    </connectionManagement>
</system.net>

默认情况下,maxconnection值为2,但这是许多原因之一。您应该监视您的服务器请求,以找出确切的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43813857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档