我有一個WCF應用程序託管在IIS中(編寫在C#/.Net 4
)。隨着時間的推移,過程的處理計數或多或少呈線性增加(在處理回收之前增加高達30,000)。根據SysInternals Process Explorer,該進程擁有的大量句柄的類型爲Thread
。但是,根據性能監視器,線程數量保持不變(大約40)。「泄漏」線程句柄
顯然,我做錯了事,正在泄漏Thread Handles
。但是,我不清楚在這種情況下究竟是什麼Thread Handle
。我會假設它是一個線程的句柄,但由於線程的數量保持一致,所以我不知道句柄數如何增加。而且,我想不出任何方法來保持線程的處理,而線程本身消失。此外,我不明確地創建新線程(我在地方使用ThreadPool
)。
顯然,我錯過了一些東西。但是什麼?
您是否將WCF服務設置爲SingleInstance,PerCall或Session?你在那裏使用IoC容器嗎? – Jordi
你是自己管理線程,還是使用線程池?哪種類型的線程使用您的應用程序(我們是在討論IIS所執行的線程 - >受到IIS本身或您自己的線程的限制)? – Rafa
WCF服務是單實例和多併發。沒有IOC容器。 –