4

我们有一个普通的 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
4

1 回答 1

2

高 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/

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

于 2011-11-04T16:17:23.877 回答