2016-04-27 21 views
0

我感到一個問題,因此尋求你的幫助。Tomcat maxThread值難題

tomcat中的maxThread計數值控制着tomcat可以服務的最大併發請求數(我的理解),這意味着最大工作線程數。

現在假設我設置了maxThread = 2,並且當前有兩個線程同時工作。如果其中一個線程創建2個子線程(調用其他api)。

我的問題:如果maxThread = 2可以存在4個線程(兩個父+兩個孩子)? 如果是,maxThread控制什麼? 如果沒有在這種情況下會發生什麼?

如果我很難解釋我自己,請原諒。

回答

0

對於您的connector之一上的每個HTTP請求,Tomcat創建一個線程(例如名爲http-8080-thread1的線程)。

maxThreads值控制這些線程。當達到maxThreads時,其他幾個線程完全可能存在或可以在JVM中創建。

另外,考慮到有一個acceptCount它設置所有請求線程忙時排隊的請求數。

More details in tomcat documentation

+0

但是我們也應該牢記線程和連接之間的差異。連接數不總是等於線程數。 Tomcat有兩種不同的模式 - NIO和BIO。 http://stackoverflow.com/questions/24678661/tomcat-maxthreads-vs-maxconnections – Batiaev

+0

@Cédric-感謝您的快速回復。我有點意識到acceptCount和maxConnection params。我想交叉驗證,如果'maxThreads'屬性控制只有父線程的計數。我覺得你是一致的。你能否分享一些贊成這個文件。 我無法在文檔中找到它。 –