maxThreads,currentThreadCount,currentThreadsBusy JMX特性涉及到Tomcat連接器使用來處理傳入請求的線程池。您可以在應用程序線程列表中看到通常名爲http-nio-[port-number]-exec-[sequence-number]
的線程。 當請求到達連接器時,後者通過線程池爲其分配一個特定的線程,該線程將「繁忙」,直到請求被處理。所以,currentThreadsBusy反映了當前正在處理的請求的數量。
maxThreads定義了在任何情況下不希望超出的線程數。當currentThreadsBusy計數器達到maxThreads閾值時,不能處理更多的請求,並且應用程序阻塞。
currentThreadCount表示線程的線程池已眼下,無論是繁忙和自由,線程池將終止某些線程,如果他們不使用,一定時間或創建新的,最多maxThreads量,如果有需求,請看下面的細節。
「Under hood」中,自從Tomcat 7以來,它是org.apache.tomcat.util.net.AbstractEndpoint
,除其他外,它負責線程管理。如果它使用java.util.concurrent.ThreadPoolExecutor
作爲線程池(默認選項),則maxThreads映射到ThreadPoolExecutor的maximumPoolSize
,currentThreadsBusy - 到activeCount
,並且currentThreadCount - 到poolSize
。
話雖如此,currentThreadsBusy是用於監視Web應用程序的健康的最好的選擇。 maxThreads更像是一個靜態值(除非您隨意動態更改它)。 currentThreadCount 可能會提供一些有用的信息,並有一定的時間滯後。