我正在托管具有多个服务的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个请求?