tomcat線程池配置

以Tomcat8爲例
配置方式一:

<Connector port="8080" acceptCount="100" maxConnections="200" 
		minSpareThreads="10" maxThreads="200"/>
  • acceptCount:請求等待隊列大小。當Tomcat沒有空間線程處理連接請求時,新來的連接請求放入等待隊列,默認爲100。當隊列超過acceptCount後,新連接請求將被拒絕
  • maxConnections:Tomcat能處理的最大併發連接數。當超過後還是會接收並放入等待隊列(acceptCount控制),連接會等待,不能被處理。BIO默認是maxThreads數量。NIO和NIO2默認是10000,ARP默認是8192
  • minSpareThreads:線程池最小線程數,默認是10.改配置指定線程池可以維持的空閒線程數量
  • maxThreads:線程池最大線程數,默認是200.當線程池空閒一段時間後會釋放只保留minSpareThreads個線程
    Tomcat最大併發線程數是由maxThreads和maxConnections中最小的一個決定。BIO場景下maxConnections和maxThreads是一樣的,當需要長連接場景時,應使用NIO模式,併發連接數是大於線程數的。

配置方式二:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" deamon="true" 
	minSpareThreads="25" maxThreads="200" maxIdleTime="60000"
	maxQueueSize="Integer.MAX_VALUE" prestartminSpareThreads="false"/>
<Connector port="8080" executor="tomcatThreadPool" 
	executorTerminationTimeoutMillis="5000"/>

此處使用了org.apache.catalina.Executor實現,表示一個可在多個Connector間共享的線程池,而且有豐富的配置

  • namePrefix:創建的Tomcat線程名字的前綴
  • deamon:是否守護線程運行,默認true
  • minSpareThreads:線程池最小線程數,默認25
  • maxThreads:線程池最大線程數,默認200
  • maxIdleTime:空閒線程池的存活時間,默認60s。當線程空閒超過該時間後,線程將被回收
  • maxQueueSize:任務隊列最大大小,默認是Integer.MAX_VALUE,建議該小,可以認爲是maxConnections
  • prestartminSpareThreads:是否在Tomcat啓動時就創建minSpareThreads個線程放入線程池,默認false
  • executorTerminationTimeoutMillis:在停止Executor時,等待請求處理線程終止的超時時間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章