接受隊列無法被監控,但是您可以使用執行器獲取用於tomcat的排隊請求數。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="20" minSpareThreads="10" maxQueueSize="30" />
<Connector port="8080" protocol="HTTP/1.1" executor="tomcatThreadPool" connectionTimeout="20000" redirectPort="8443" maxConnections="50" />
配置maxThreads = 「20」指線程池具有20名工人至多,可以同時處理20個請求。
maxQueueSize =「30」表示線程池最多可排隊處理30個未處理的請求。因此,您可以通過JMX監視queueSize屬性以獲取排隊請求的數量。
但默認情況下,線程池隊列再也不會擔任任何請求,因爲MAXCONNECTIONS默認值是maxThreads的值,這意味着當所有工人都很忙,新的請求在接受隊列中排隊。
通過設置maxConnections =「50」,tomcat可以接受比maxThreads(20)更多的請求。在上面的例子中,Executor線程池可以處理20個請求,額外的30個請求將保存在線程池隊列中,更多的請求將進入隊列。
所以現在你可以監視使用的MBean在線程池排隊的請求數量「卡塔利娜:類型=執行人,名稱= tomcatThreadPool」和屬性名「QUEUESIZE」
有趣的是,我懷疑。我知道在碼頭你可以讓請求排隊(這聽起來像某人在ML上提出的解決方案之一) - 但這與tomcat目前的做法有些不同。 – 2011-03-22 22:07:46
@Michael:我對你的用例很感興趣。你想過濾掉某些URL模式還是優先考慮任何servlet - 也就是說爲什麼要監視未決的請求。 – JoseK 2011-03-23 02:54:15
實際上,我對服務器的整體「負載」度量更感興趣 - 即觸發監控事件。 – 2011-04-03 03:06:43