[英]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稍微复杂一些,但功能可能更强大。 否则继续在黑暗中射击
或-在高CPU进程中使用任务管理器/ Procexp收集多个完整用户转储
并使用线程计数器收集性能日志。 性能->添加计数器->线程在线程下选择%Processor Time,ID线程,ID进程。
从性能监视器中可以找到较高的CPU线程ID。 现在,您可以将线程ID与调试诊断分析报告相关联,并找到线程调用堆栈。
希望这可以帮助。
谢谢,
Parthiban
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.