【发布时间】: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