【问题标题】:MaxConcurrentRequestsPerCPU and MaxConcurrentThreadsPerCPU not working as documented?MaxConcurrentRequestsPerCPU 和 MaxConcurrentThreadsPerCPU 没有按记录工作?
【发布时间】:2013-04-16 13:57:42
【问题描述】:

在 IIS7.5 环境中,我已将 aspnet.config 配置为将 MaxConcurrentRequestsPerCPU 设置为 1。

我正在这个 IIS 实例上执行一个 Web 服务,我已为其配置公开 MaxConcurrentRequestsPerCPU 和 MaxConcurrentThreadsPerCPU 以响应 ASMX Web 服务中的 WebMethod,这允许我通过 Web 服务确认 .NET 框架是正确读取这些值,因此它们应该被 IIS 正确使用,只需让 WebMethod 从 HostingEnvironment 对象返回值。

我还有一个 WebMethod,它只是简单地让线程休眠 5 秒,简称为 TestMethod。

理论上,我相信此设置应确保对 TestMethod 的后续调用以串行方式发生,因为每个 CPU 只允许 1 个请求,或者,如果每个 CPU 实际上允许四核系统上的每个内核,最多并行处理 4 个请求,具体取决于它是真正每个 CPU 还是每个内核。

但是,这两种情况似乎都不是。对于此方法的 20 个同时请求,我希望看到大约 100 秒(20 个请求 x 5 秒)或 25 秒((20 个请求/4 个核心)x 5 秒)的完成时间。相反,我始终以 10 秒的完成时间结束,这意味着尽管并发请求限制设置为 1,但并行处理了 10 个请求。当我还将每个 CPU 的并发线程也设置为 1 时,这仍然是正确的。

谁能解释为什么这些设置似乎被忽略了,或者在这种情况下似乎无法正常工作?

【问题讨论】:

  • 当时有没有找到解决办法
  • @Mohamad 恐怕没有,它似乎完全坏掉了,我也没有从微软自己那里得到太多帮助。

标签: c# asp.net .net iis


【解决方案1】:

要对此进行测试(这是一个非常奇怪的测试,任何人都不应该在生产环境中做这样的事情),您需要将 maxConcurrentRequestsPerCPU 设置为 1,然后将 MaxConcurrentThreadsPerCpu 设置为 0。

原因是 ThreadsPerCpu 设置是为了模拟老式的 IIS 限制(“经典”应用程序池模式)。

有相应的 IIS 7.5 更改(仅限 Windows Server 2008 R2) 这允许为每个指定不同的 aspnet.config 文件 应用程序池(此更改尚未移植到 IIS 7.0)。和 这样,您可以不同地配置每个应用程序池。这 maxConcurrentRequestsPerCPU 设置与注册表项相同 如上所述,除了 aspnet.config 中的设置将 覆盖注册表项值。 maxConcurrentThreadsPerCPU 设置是新的,并允许并发由数量门控 线程,类似于在 Classic/ISAPI 模式下完成的方式。经过 默认 maxConcurrentThreadsPerCPU 被禁用(值为 0),在 有利于通过请求数量来控制并发,主要是 因为 maxConcurrentRequestsPerCPU 性能更好(门控数字 线程的实现更复杂/成本更高)。通常你会 使用请求门控,但您现在可以选择禁用它(设置 maxConccurrentRequestsPerCPU=0) 并启用 maxConccurentThreadsPerCPU 代替。您还可以启用这两个请求 和线程门控,ASP.NET 将确保两者 要求得到满足。 requestQueueLimit 设置与 processModel/requestQueueLimit,除了在 aspnet.config 将覆盖 machine.config 设置。所有这些 可能有点令人困惑,但对于几乎每个人来说,我的建议 是对于 ASP.NET 2.0,您应该使用与 ASP.NET v4.0 中的默认值;即设置 maxConcurrentRequestsPerCPU = "5000" 和 maxConcurrentThreadsPerCPU="0"。

http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx

【讨论】:

  • 嘿,这不太好,我正在尝试做类似的测试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 2015-10-19
  • 2023-04-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 2019-04-24
相关资源
最近更新 更多