Asp.net mvc 具有极高cpu的mvc应用程序评测工具

Asp.net mvc 具有极高cpu的mvc应用程序评测工具,asp.net-mvc,performance,profiling,windows-server-2008,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 可以使用哪些工具来帮助实现这一点?

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

因此,我正在研究MVC应用程序中可能存在的问题——最好不更改任何代码。该服务器是一台带有IIS 7.5的windows server 2008 R2


可以使用哪些工具来帮助实现这一点?对于初学者,我一直在寻找设置一些性能计数器的方法。

我知道这似乎是一项艰巨的任务,但开始时要缓慢,并尝试对应用程序性能如此下降的原因进行假设。从基本perfmon计数器开始是一个很好的开始,根据本文:


有很多关于这个话题的帖子,所以一定要做你的研究。对于我推荐的ASP.NET MVC应用程序,一个好的探查器在这里绝对有帮助,因为它可以显示到DBs和其他下游系统的调用位置和调用时间。

我知道这似乎是一项艰巨的任务,但是,请慢慢开始,并尝试建立一个假设,解释为什么您的应用程序会出现这样的性能下降。从基本perfmon计数器开始是一个很好的开始,根据本文:


有很多关于这个话题的帖子,所以一定要做你的研究。对于我推荐的ASP.NET MVC应用程序,一个好的探查器在这里绝对有帮助,因为它可以显示对DBs和其他下游系统的调用的位置和时间。

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

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

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

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

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

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