在服务器上托管 WCF 服务后创建和杀死空线程

Posted

技术标签:

【中文标题】在服务器上托管 WCF 服务后创建和杀死空线程【英文标题】:Empty Threads creating and killing after WCF service is hosted on Server 【发布时间】:2016-07-09 09:34:42 【问题描述】:

我创建了一个 WCF 服务并在我的本地主机中运行它。我打开了微软的“进程监视器”来观察后台进程。令人惊讶的是,我看到许多线程在零用户时间和内核时间的情况下创建和杀死。

我不知道它为什么会创建空线程。谁能指导我为什么要创建和销毁这么多空线程。

在进程监视器中创建空线程的片段:

【问题讨论】:

可能是ThreadPool 你不会碰巧每 8 秒调用一次吗? 【参考方案1】:

创建了一组线程来处理请求。这称为线程池。当请求很高时,会创建更多的线程并将其添加到线程池中以有效地处理请求。这些线程在创建后会被重复使用。

线程池减少了为每个请求重新初始化线程的时间。

【讨论】:

嗨维努,感谢您的更新。但我有一个问题。当没有请求发送到服务时,这些空线程正在创建。这意味着,没有应用程序/用户不使用该服务,而是创建和销毁线程。这个线程创建会影响服务的性能吗?如果是这样,我们怎样才能减少它? @Mathew "当没有请求发送到服务时,这些空线程正在创建。这意味着,没有应用程序/用户不使用服务,但线程被创建和销毁。" i> - 你应该把它添加到你的问题中 嗨,Mathew,根据您显示的屏幕截图,并非所有线程都是为处理请求而创建的,通常是但不会太多。我认为代码中可能有问题。

以上是关于在服务器上托管 WCF 服务后创建和杀死空线程的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure 应用服务上托管 WCF 不响应客户端应用服务

IIS 上托管的 WCF 服务和 IIS 上的客户端网站

在 Windows Server 2003 上托管 WCF Web 服务

访问本地 IIS 上托管的 WCF 服务时出错:“相对 URI 不支持此操作。”

无法将 Azure VM 上托管的 WCF 服务引用添加到 VS2015 项目

在 IIS6 上托管 WCF,是不是需要任何特殊设置?