我正在基準自我託管nettcp WCF服務,從50個線程向位於同一臺計算機上的服務發出請求。問題在於Xeon E3-1270的CPU利用率從未超過35%。當我在兩臺筆記本電腦上運行相同的測試時,它的確會達到100%。WCF無法達到100%的CPU。什麼是瓶頸?
WCF方法什麼都不做,所以它不應該被IO限制。我試圖增加線程的數量,但這沒有幫助。每個線程創建一個服務通道並執行數千次重用該通道實例的調用。
這裏是我使用的服務類:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class TestService : ITestService
{
public void Void()
{
// DO NOTHING
}
}
CONFIGS:
ServiceThrottlingBehavior: MaxConcurrentCalls = 1000 MaxConcurrentInstances = 1000, MaxConcurrentSessions = 1000
NetTcpBinding的 將ListenBackLog = 2000 MaxConnections = 2000
如果你把一些實實在在的工作一樣,會發生什麼'回報Enumerable.Range(1,10000).Sum();'? –
打開perf計數器http://msdn.microsoft.com/en-us/library/ms735098.aspx並使用perfmon.exe檢查是否達到某些(限制/積壓)設置的上限。 – larsw