我想了解设置ThreadPool.SetMinthreads
的影响。我有一个Azure应用服务中运行多个虚拟应用程序。我的理解是,所有这些虚拟应用程序将共享应用程序池,并将只有一个工作进程(假设应用程序池的最大工作进程将为1)。ThreadPool SetMinThreads - 设置它的影响
我有以下两个问题。
- 在此设置中,如果设置了
ThreadPool.SetMinThreads
让我们说100个工作线程和IO线程,可我安全地假定每个应用程序域将有100个工作线程和100个IO线程加载时?确切地说,ThreadPool.SetMinThreads适用于AppDomain或工作进程或应用程序池? ThreadPool的范围是什么? - 我还假设系统可以产生的最大线程数没有限制,因为它是由底层主机的容量决定的。这意味着,如果我没有明确设置ThreadPool.SetMaxThreads,则系统将产生新线程,并且如果持续加载直到CPU /内存达到最大值,系统将继续执行此操作。我立足于下面的语句来支持我的假设:
进程和线程,例如,需要物理内存,虚拟 内存,池内存,这样的进程或线程 可数在给定的Windows系统上创建最终由 其中一个资源决定,具体取决于创建进程或线程的方式以及首先命中哪个约束。 https://blogs.technet.microsoft.com/markrussinovich/2009/07/05/pushing-the-limits-of-windows-processes-and-threads/
你为什么要改变它,它实际需要反正线程数?几乎没有必要改变线程池中的最小线程数。 Msoft花了很多时间使线程池行为最优化 - 你为什么不同? (编辑 - 不是说你错了,只是说可能有另一个解决方案) – mikelegg
当你在这个有大量并发用户的系统上运行性能测试时,min线程会产生影响。错误数和响应时间与线程数有关 – Thomas