我想了解設置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