4

我想知道在 machine.config 中修改 processModel 是否会对 IIS express 集成模式应用程序产生任何影响?

我正在尝试将 maxWorkerThreads 修改为至少 100,因为我正在使用 WCAT 比较 Windows 7 上的普通 IIS 与 IIS express,以查看 scott 说 IIS express 没有连接限制时是否正确。

尽管 IIS express 确实显示了 30+ 个请求同时执行,而正常的 IIS 限制为 10,但两者之间的实际每秒请求总数相当,并且 IIS express 具有更高的 CPU 使用率,平均 70 个请求排队,而 0 个请求等待正常IIS!而四核 i7 的 CPU 仅占 70% 左右。肯定有优化的空间吗?

额外细节

我已将在 Windows 7 上运行的 WCAT 结果(相同的脚本)上传到 http://d1yb9lkqglrfzu.cloudfront.net/IISExpress-100VU-MachineConfig.zip

  1. 与普通 IIS 相比,IIS Express 的每秒请求数和处理的总事务数略高。
  2. IIS Express 一次最多执行 50 个请求,而 Windows 7 上的普通 IIS 按照设计限制为 10 个。
  3. IIS express 使用了 30% 以上的 cpu,可能是因为它一次处理了额外的请求。
  4. 但平均而言,Express 请求需要更长的时间才能完成。请参阅请求执行时间性能计数器和时间分析(第一个和最后一个字节)。Express 只能在总请求数上击败 IIS,因为它一次可以处理更多请求!

理论

  1. 即使没有设置跟踪,IIS express 也会将每个请求打印到命令行窗口这一事实是否会减慢它的速度。

  2. 我还注意到在 IIS express applicationhost.config 中注册的许多附加模块不在 IIS applicationhost.config 中。那么额外的调试/跟踪模块可能会导致问题。

  3. 我注意到 IIS express 没有 FileCache 和 HTTPCache 模块。这可能是为什么?

如果 IIS express 不受限制,我希望 asp.net 专家能够阐明这些结果是如何可能的。

4

1 回答 1

6

Machine.config 设置适用于在 IISExpress 中运行的 asp.net 应用程序。只需确保匹配 .Net 版本和位数(iisexpress 仅在 32 位模式下运行,因此

  • %windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config或者
  • %windir%\Microsoft.NET\Framework\v4.0.30319\CONFIG\machine.config 基于 CLR 版本的文件是正确的。不要编辑 Framework64 目录中的那个。

IIS Express 不会限制连接,尽管操作系统本身可能存在一些限制。对于 iis express,性能并不是真正的首要任务。IIS Express 不会故意限制执行,但不会竭尽全力充分利用 CPU。您的性能开销观察很有趣。我将探讨可能导致它的原因。您是否尝试循环运行单线程客户端应用程序以查看 IIS 与 IIS Express 的比较。

于 2011-01-22T03:47:49.187 回答