由于许多缓慢的 clr.dll!CopyPDBs,IIS 进程 (w3wp.exe) 的 CPU 使用率过高

由于许多缓慢的 clr.dll!CopyPDBs,IIS 进程 (w3wp.exe) 的 CPU 使用率过高

我正在使用Windows Server 2008 R2 EnterpriseIIS 7.5托管ASP.NET MVC 5应用程序。

我最近注意到其中一个进程w3wp.exe占用了极高的 CPU 带宽:

w3wp.exe CPU 使用率过高

经过进一步调查后,我还注意到造成这种情况的原因在于该功能clr.dll!CopyPDBs

w3wp.exe 线程详细信息

有人知道可能是什么问题吗?

如果原因与 .NET Framework 无关,clr.dll!CopyPDBs我该如何进一步调查以找出实际原因

答案1

这通常是因为您在 IIS 上有一个自定义应用程序。如果是内部构建的应用程序,请与开发人员讨论。

如果不是内部开发的,请查看带计数器的 .net CLRhttps://msdn.microsoft.com/en-us/library/x2tyfybc(v=vs.110).aspx以及有关 CLR 性能的更多提示https://msdn.microsoft.com/en-us/library/ee851764(v=vs.110).aspxhttps://msdn.microsoft.com/en-us/magazine/cc163528.aspx

答案2

这仅仅意味着它是一个占用所有 CPU 的 .NET 应用程序,但 Process Explorer 找不到它的 .pdb 文件。请参阅https://stackoverflow.com/a/31705019/8479了解更多详情。

如果您无法让 Process Explorer 说出发生了什么,那么请尝试其他途径,如日志文件、事件日志和 Process Monitor。

答案3

这充其量只是猜测,但也许您的开发团队正在以调试模式而不是发布模式构建和部署应用程序。这将导致 .pdb 文件的出现。这意味着您的应用程序将在系统执行期间占用额外资源来收集系统状态和调试信息,从而导致更多的处理器利用率。

因此,确保它们在发布模式下构建和部署就足够简单了。

相关内容