【发布时间】:2011-11-17 14:52:17
【问题描述】:
我正在对自托管 nettcp WCF 服务进行基准测试,从 50 个线程向不在同一台计算机上的服务发出请求。问题是至强 E3-1270 的 CPU 利用率从未超过 35%。当我在两核笔记本电脑上运行相同的测试时,它确实达到了 100%。
WCF 方法什么都不做,所以它不应该受到 IO 的限制。我试图增加线程数,但这无济于事。每个线程创建一个服务通道并重复使用该通道实例执行数千次调用。
这是我正在使用的服务类:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class TestService : ITestService
{
public void Void()
{
// DO NOTHING
}
}
配置:
ServiceThrottlingBehavior: MaxConcurrentCalls = 1000 MaxConcurrentInstances = 1000, MaxConcurrentSessions = 1000
NetTcpBinding ListenBacklog = 2000 最大连接数 = 2000
【问题讨论】:
-
如果你投入一些像
return Enumerable.Range(1, 10000).Sum();这样的实际工作会发生什么? -
打开性能计数器 msdn.microsoft.com/en-us/library/ms735098.aspx 并使用 perfmon.exe 检查您的某些(限制/积压)设置是否达到上限。
标签: wcf performance