我有一个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容器。 –