繁体   English   中英

如何找到应用层(WCF)中CPU使用率较高的根本原因

[英]How to find root cause for high cpu usage in app tier (WCF)

我当前的应用程序包括3层-Web层-App Tier-数据库

在对100个用户进行测试时,我们发现App tier的cpu几乎达到了90%,这是因为Web服务器和数据库服务器运行良好。

我无法弄清楚是什么代码导致CPU使用率高。 主要是我们在那里有CRUD操作。 我们以DTO的形式接受输入,我们将它们传输到实体中(使用Entity框架),在数据库中添加/更新/删除。 对于Get操作,我们将数据提取到EF实体中,将其存储在DTO中,然后将DTO发送给客户端。

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

以下是服务器的配置:

Web服务器(数量= 1)处理器Intel Xeon CPU X5675 @ 3.07 GHz 2.19 GHz

核心数(虚拟)8

内存8GB

操作系统Windows Sever 2012 Standard

处理器类型64位

NET Framework 4.5安装的软件

App Server(数量= 1)处理器Intel Xeon CPU X5675 @ 3.07 GHz 3.07 GHz

核心数(虚拟)8

内存8GB

操作系统Windows Sever 2012 Standard

处理器类型64位

NET Framework 4.5安装的软件

DB服务器(数量= 1)处理器Intel Xeon CPU E7-4830v2 @ 2.20 GHz 2.19 GHz

核心数(虚拟)8

内存8GB

操作系统Windows Sever 2012 Standard

处理器类型64位

安装的软件Microsoft SQL Sever 2014

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

  • Windows系统内部工具Process Explorer(Procexp)是查找高CPU进程和线程调用堆栈(方法调用)的好工具

或-在高CPU进程中使用任务管理器/ Procexp收集多个完整用户转储

并使用线程计数器收集性能日志。 性能->添加计数器->线程在线程下选择%Processor Time,ID线程,ID进程。

从性能监视器中可以找到较高的CPU线程ID。 现在,您可以将线程ID与调试诊断分析报告相关联,并找到线程调用堆栈。

希望这可以帮助。

谢谢,

Parthiban

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM