【问题标题】:profiling tools for mvc app with very high cpu用于具有非常高 cpu 的 mvc 应用程序的分析工具
【发布时间】:2013-08-27 19:09:01
【问题描述】:

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

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

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

【问题讨论】:

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


【解决方案1】:

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

Troubleshooting High CPU in an IIS 7.x Application Pool

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2012-09-03
      相关资源
      最近更新 更多