ASP.NET应用程序和CPU使用情况

时间:2011-11-04 13:53:48

标签: asp.net cpu-usage response-time

我们有一个vanilla ASP.NET应用程序(ASP.NET Web表单,实体框架,SQL Server 2005),没有任何代码显式多线程。它已部署在交错的环境中(操作系统 - Windows Server 2008 R2 64位,CPU - Intel Xeon E5507 @ 2.27 GHz 2.34 GHz,RAM - 7.5 GB)。此环境由Web,数据库和报告服务器组成,每个都是云中的单独实例(Amazon EC2)。在测试并发性时,观察结果如下:

  

1个用户 - CPU使用率~25%,响应时间2-4秒

     

2个用户 - CPU使用率40-50%,响应时间3-6秒

     

4位用户 - CPU使用率60-80%,响应时间4-8秒

     

8个用户 - CPU使用率80-100%,响应时间4-10秒

我的问题是:

  1. CPU使用率是否相对于否。并发用户?如上述观察所示,响应时间可能会有很大变化吗?

  2. 从上面的观察中,当并发用户数为~10时,CPU将被最大化。 CPU响应时间不应该大幅增加,并不能无缝地处理更多的并发用户吗?在理想情况下,如果是基本的ASP.NET应用程序,CPU可以处理多少并发用户?

  3. 如果上面的问题是肯定的,那么高CPU /长响应时间可能会出现什么问题?我们应该采取哪些方法进行有效调试以找出代码/ IIS设置中的瓶颈?

  4. PS:已更改的IIS设置(即在machine.config中):

        maxWorkerThreads = 100
        MinWorkerThreads = 50
        maxIOThreads = 100
        minIOThreads = 50   
        minFreeThreads = 176        
        maxConnections = 100
    

1 个答案:

答案 0 :(得分:1)

高CPU使用率可能是由各种各样的事情引起的。找出正在发生的事情的最简单方法是使用分析工具:

ANTS Memory Profiler:
 http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

ANTS Performance Profiler:
 http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/

它们非常实惠,但您应该可以不受试用版本的限制。这些工具在识别瓶颈和内存泄漏方面做得非常出色。