【问题标题】:ASP.NET application and CPU usageASP.NET 应用程序和 CPU 使用率
【发布时间】:2011-11-04 13:53:48
【问题描述】:

我们有一个普通的 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 设置中的瓶颈?

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

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

【问题讨论】:

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


    【解决方案1】:

    高 CPU 使用率可能是由多种原因引起的。找出发生了什么的最简单方法是使用分析工具:

    ANTS 内存分析器:
    http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

    ANTS 性能分析器:
    http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/

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

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 2012-01-03
      • 1970-01-01
      相关资源
      最近更新 更多