0

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

因此,我正在查看问题可能在 MVC 应用程序中的分析 - 最好不更改任何代码。该服务器是带有 IIS 7.5 的 windows server 2008 R2。

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

4

2 回答 2

3

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

对 IIS 7.x 应用程序池中的高 CPU 进行故障排除

关于这个主题有大量的 SO 帖子,所以一定要做你的研究。一个好的分析器在这里绝对可以提供帮助,对于 ASP.NET MVC 应用程序,我推荐Red Gate ANTS,因为它可以显示对 DB 和其他下游系统的调用在哪里以及需要多长时间。

于 2013-08-25T01:21:13.140 回答
0

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

一个好的问题是:它每秒或每分钟处理多少事务?如果这个数字下降,你就知道你有问题要解决。

我使用的方法是在缓慢期间获取堆栈样本并检查它们。例如,如果有 50% 的时间发生了可疑的事情,那么大约 50% 的样本会以精确的细节看到它。您不需要大量样本即可看到这一点,但您确实需要检查每个样本。测量并不能很好地告诉你发生了什么。

于 2013-08-25T21:00:00.683 回答