我正在使用perfmon來檢查我的服務行爲。我所做的是在不同的機器上啓動6個客戶端應用程序實例,並以120個線程(每個客戶端應用程序20個線程)向服務器發送請求。WCF中的服務實例
我已經檢查過計數器和實例的最大數量(我使用PerSession模型並將實例的數量設置爲100)爲12,我認爲奇怪的是我的服務響應時間大約爲120秒......我認爲增加實例數量將導致WCF創建更多實例,因此響應時間會更快。
任何想法爲什麼WCF不會創建更多的服務實例?
感謝帕維爾
我正在使用perfmon來檢查我的服務行爲。我所做的是在不同的機器上啓動6個客戶端應用程序實例,並以120個線程(每個客戶端應用程序20個線程)向服務器發送請求。WCF中的服務實例
我已經檢查過計數器和實例的最大數量(我使用PerSession模型並將實例的數量設置爲100)爲12,我認爲奇怪的是我的服務響應時間大約爲120秒......我認爲增加實例數量將導致WCF創建更多實例,因此響應時間會更快。
任何想法爲什麼WCF不會創建更多的服務實例?
感謝帕維爾
您可能要參考this article並進行調整,以您的WCF的配置(特別是MAXCONNECTIONS),以獲得您想要連接的數量。
考慮使用諸如http://www.codeplex.com/WCFLoadTest之類的命令來啓動服務。
此外,perfmon只會讓你到目前爲止。如果你想調試WCF服務,你應該看看Windows SDK中的SvcTraceViewer和SvcConfigEditor。
在你的服務綁定什麼你設置maxconnections?一旦達到限制,呼叫連接將被阻止。
默認爲10我想。
WCF服務默認情況下,節流 - 這是一個服務行爲,它可以輕鬆地調整。
查看MSDN docs on ServiceThrottling。
下面是默認設置:
<serviceThrottling
maxConcurrentCalls="16"
maxConcurrentInstances="Int.MaxValue"
maxConcurrentSessions="10" />
通過這些設置,就可以輕鬆控制多少會話或併發呼叫可以被處理,你可以確保你的服務器不會被(欺詐)的請求淹沒並跪下。
Ufff,最後一次嘗試去理解那個愚蠢的WCF。
我現在所做的是:
創建客戶端,啓動20個線程,每個線程將在循環中的服務請求。服務器上的性能計數器聲稱只有服務對象的2個實例始終創建。平均請求時間約爲40秒(我在代理呼叫之前開始測量,在呼叫返回後結束)。
修改該客戶端以啓動5個線程並啓動該客戶端的4個實例(以模擬前面示例中的20個線程行爲)。性能監視器顯示服務對象的8個實例始終創建。平均請求時間爲20秒。
有人能告訴我發生了什麼事嗎?我認爲服務器存在一個問題,即它不想處理更多的請求,但顯然這是客戶端引起的騷動,不希望發送更多的請求,也許會有某種配置選項,限制客戶端同時發送多個兩個請求...(緩衝區,節流等...)
通道工廠是在每個線程中創建的。
maxConnections屬性?我應該在哪裏應用它?綁定配置? – dragonfly 2009-12-02 10:22:29