【发布时间】:2011-09-01 23:35:15
【问题描述】:
当 ASP.NET 接收到一个请求时,它如何确定是服务它还是将它排队?我之所以问是因为我正在监视服务器上的性能计数器,并且 CPU 没有达到最大值,并且有大量可用的工作线程,但我仍然看到多达 200 个请求排队。
【问题讨论】:
-
我怀疑它不会使用您的大量线程,因为这不一定有助于您的性能。对于最大性能,最好使用 1:1 的线程与 CPU 的比率。不确定 ASP .NET 内部结构
-
线程阻塞了 I/O 操作。在这种情况下,将它们与 CPU 保持 1:1 并不能提高吞吐量。而且我认为 ASP.NET 也不会假定请求是 CPU 绑定的。我还看到并发请求达到 20 个,这比机器上的处理器数量多。
-
@RandomEnergy:这就是我说“大部分”的原因,如果他们阻塞 I/O 操作,他们就是 阻塞,这意味着他们必须等待,如果此时线程没有被切换出去,会浪费CPU。非阻塞 I/O 操作将允许其他线程在 I/O 完成时占用 CPU。
标签: asp.net threadpool