2010-02-12 29 views
3

我們有一項作爲Windows服務託管的服務。 netTcpBinding與消息安全類型沒有可靠的會話。客戶端CPU停止服務時幾乎100%

在客戶端,我們有一個代理集合緩存在列表中,作爲通道創建和處理是昂貴的操作。我的客戶端連接到服務器並從服務器獲取數據。

現在,如果我停止服務器,然後CPU跳起來。這會消耗CPU的工作線程的代碼執行的

void System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, NativeOverlapped *) 

的當我處理所有代理的客戶端應用程序佔用CPU變得沒有。我需要知道我們如何解決WCF上的這個問題。

回答

0

一個問題是你爲什麼要在客戶端上收集代理的單個wcf服務。假設你有20個代理服務器,WCF服務實例化爲每會話那麼它會在你的服務器上創建20個服務實例,每個實例都有內存分配給它。如果你有每個呼叫(這是默認),那麼你將有更多的實例。不要讓代理列表重用一個代理。

我想當你停止服務時,cpu必須在短時間內清理(垃圾收集)太多的服務實例,因此它會跳轉。

除非你不關閉代理服務器上它們各自的實例將不會被釋放。嘗試實例化Singleton。

相關問題