了解WCF不能并行处理所有呼叫的原因

时间:2018-03-24 19:37:21

标签: wcf asynchronous

我正在托管具有多个服务的WCF应用程序。我使用的是.NET Framework 4.5和IIS 8.5(在Windows Server 2012 R2上)。

我有8个VCPU和16 gb Ram。

我想知道为什么在负载下我的调用不会并行处理。

这是我在服务器端进行的简单测试:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple)]
public  class Service1 : IService1
{
    Guid sessionGuid = Guid.NewGuid();

    public async Task<Guid> Ping()
    {
        await Task.Delay(3000);
    }
}

我已将此设置为限制:

<serviceThrottling 
        maxConcurrentCalls="350" maxConcurrentSessions="350" 
        maxConcurrentInstances="350" />

当我并行运行20个呼叫(使用fiddler)时,我看到10个呼叫在3秒内结束,其他10个呼叫在6秒内结束。我试图修改ThreadPool.SetMinThreads但没有运气......

请您解释一下如何在3秒内并行处理所有20个请求?

0 个答案:

没有答案