具有非常高的CPU的mvc app的分析工具

时间:2013-08-25 01:13:41

标签: asp.net-mvc performance profiling windows-server-2008

我目前正在运行一个asp.net mvc应用程序,并且在高负载下我看到该网站最大值为100%。情况并非如此,我认为应用程序可能存在降低性能的问题。此应用程序直接与wcf服务层通信,该层与sql server数据库通信。 wcf层或数据库层都没有任何性能问题,因为100%的CPU可以直接分配给MVC应用程序。

因此,我正在寻找可能在MVC应用程序中出现问题的概要分析 - 最好不要更改任何代码。该服务器是带有IIS 7.5的Windows Server 2008 R2。

有哪些工具可以帮助解决这个问题?对于初学者,我一直在寻找一些性能指标。

2 个答案:

答案 0 :(得分:3)

我知道这似乎是一项艰巨的任务,但是开始很慢,并尝试为您的应用程序遇到这种性能下降的原因制定一个假设。一个好的起点是基本的perfmon计数器和debugdiag,根据这篇文章:

Troubleshooting High CPU in an IIS 7.x Application Pool

关于这个主题有很多SO帖子,所以你的研究肯定是。对于我推荐Red Gate ANTS的ASP.NET MVC应用程序,一个好的分析器肯定对此有所帮助,因为它可以显示对DB和其他下游系统的调用位置和时间。

答案 1 :(得分:0)

如果程序占用了运行的核心的100%,那意味着它的CPU时间与I / O(或睡眠)时间的比率非常高。 如果这是正常的,那么你可以将CPU时间减少一个数量级,它仍然可以显示几乎100%的CPU,即使它完成了十倍的工作量。 所有这些意味着有比CPU百分比更好的性能诊断。

一个好的方法是:每秒或每分钟处理多少笔交易?如果这个数字下降,你知道你有一个问题需要解决。

我使用的方法是在缓慢的过程中获取stackshot samples并检查它们。例如,如果有可能在50%的时间内发生怀疑,那么将在大约50%的样本中详细地看到它。 您不需要大量样本来查看,但您需要检查每个样本。 测量不是很好地告诉你发生了什么。