Asp.net 如何找到应用层(WCF)cpu使用率高的根本原因

Asp.net 如何找到应用层(WCF)cpu使用率高的根本原因,asp.net,performance,entity-framework,wcf,debugdiag,Asp.net,Performance,Entity Framework,Wcf,Debugdiag,我当前的应用程序由3层组成-Web层-应用层-数据库 在对100名用户进行测试时,我们发现应用层的cpu几乎达到了90%,而web服务器和数据库服务器表现良好 我无法找出是什么代码导致cpu使用率高。主要是我们在那里进行积垢处理。我们以DTO的形式获取输入,将它们转换为实体(使用实体框架),添加/更新/删除到数据库中。在Get操作中,我们将数据提取到EF实体中,将它们存储在DTO中,然后将DTO发送到客户端 我曾尝试使用DebugDiag,但找不到任何有用的信息 以下是服务器的配置: Web服务

我当前的应用程序由3层组成-Web层-应用层-数据库

在对100名用户进行测试时,我们发现应用层的cpu几乎达到了90%,而web服务器和数据库服务器表现良好

我无法找出是什么代码导致cpu使用率高。主要是我们在那里进行积垢处理。我们以DTO的形式获取输入,将它们转换为实体(使用实体框架),添加/更新/删除到数据库中。在Get操作中,我们将数据提取到EF实体中,将它们存储在DTO中,然后将DTO发送到客户端

我曾尝试使用DebugDiag,但找不到任何有用的信息

以下是服务器的配置:

Web服务器(数量=1)处理器英特尔至强CPU X5675@3.07 GHz 2.19 GHz

核心数(虚拟)8

RAM 8GB

操作系统Windows Server 2012标准

处理器类型64位

NetFramework 4.5中安装的软件

应用服务器(数量=1)处理器英特尔至强CPU X5675@3.07 GHz 3.07 GHz

核心数(虚拟)8

RAM 8GB

操作系统Windows Server 2012标准

处理器类型64位

NetFramework 4.5中安装的软件

DB服务器(数量=1)处理器英特尔至强CPU E7-4830v2@2.20 GHz 2.19 GHz

核心数(虚拟)8

RAM 8GB

操作系统Windows Server 2012标准

处理器类型64位


软件安装Microsoft SQL Server 2014

没有比安装APM工具更好的解决方案了。有了它们,你会很快找到根本原因。AppDynamics或NewRelic很简单,Dynatrace稍微复杂一些,但可能更强大。 否则在黑暗中继续拍摄

  • WindowsSysInternalToolProcessExplorer(Procexp)是查找高CPU进程和线程调用堆栈(方法调用)的好工具
或 -在高CPU进程上使用任务管理器/Procexp收集多个完整用户转储

并使用线程计数器收集perfmon日志。Perfmon->Add counter->Thread下的线程选择%Processor Time,ID Thread,ID process

从perfmon可以找到高CPU线程ID。现在可以将线程ID与调试诊断分析报告关联起来,并找到线程调用堆栈

希望这有帮助

谢谢

Parthiban

使用内置VS profiler,或识别应用层中CPU密集的操作