【问题标题】:IIS Worker Process and Worker ThreadsIIS 工作进程和工作线程
【发布时间】:2019-04-06 20:02:22
【问题描述】:

我有一个简单的 ASP.Net MVC 应用程序,它部署在 IIS 中。我对此应用程序进行了示例负载测试。我的应用程序中记录了响应时间。当我将应用程序中的响应时间与 IIS 响应时间进行比较时,IIS 响应时间比我的应用程序日志高。

据我了解,IIS 没有足够的工作线程来处理请求并保持请求处于暂停状态。此保持时间也记录为 IIS 响应时间的一部分。

我的理解是否正确。如果是,如何增加工作线程以增加整体吞吐量。

我尝试了以下步骤来增加工作线程,但更改后我没有看到任何影响。 https://support.microsoft.com/en-us/help/821268/contention-poor-performance-and-deadlocks-when-you-make-calls-to-web-s

问候

【问题讨论】:

  • 响应时间是否太长以至于导致您的应用程序出现问题?我建议你别管它。 IIS 正在做它应该做的事情。
  • msdn.microsoft.com/en-us/library/… 增加线程还为时过早。检查“Requests Queued”和“Request Wait Time”,看看它们在负载测试期间的趋势是什么。只有当它们确实显示请求在队列中待处理时,您才能继续增加工作线程数。更改 machine.config 后,请确保重新启动机器并再次测试。
  • 是和不是。如果同时服务器正在运行最大容量(CPU、IO、应用程序使用的任何内容),则需要更多的资源。那么,事情等待的原因不是线程问题,而是阻塞回到队列的争用问题。
  • 线程通常是 ASP.NET 中的充足资源。您需要非常高的并发性才能最大化池。也许您正在尝试合成工作负载,例如 sleep(1000)?使用 Process Explorer 确定实际线程数、发布代码并说明您是如何执行负载测试的。

标签: c# performance iis worker-process worker-thread


【解决方案1】:

如果您的服务器已被当前请求饱和(最大化),那么添加更多线程可能是个坏主意。这只会造成更多的资源争用并使问题变得更糟。

当您的服务器一次接收的请求过多,超出其容量时,IIS 会将请求排队以缓解压力,直到当前请求可以完成。

您的测试只是简单地揭示了您系统的容量。此时,如果您的容量不够高,则需要考虑优化策略或考虑其他选项,例如“向上扩展”或“向外扩展”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2018-08-29
    • 2020-03-09
    相关资源
    最近更新 更多