Tomcat中線程池的配置及原理

1. Tomcat中線程池的配置

Tomcat中配置線程池時,需打開Tomcat的配置文件(conf/server.xml),然後加入以下配置:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>

<Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

Executor可配置的參數有以下幾種:

  • className:線程池的實現類,如果自定義需要實現org.apache.catalina.Executor接口。默認是org.apache.catalina.core.StandardThreadExecutor
  • name:線程池的名字(server.xml可以定義多個線程池)
  • threadPriority:線程的優先級,默認是5
  • daemon:是否是守護線程,默認是true
  • namePrefix:線程的名字前綴,線程的名字由namePrefix + threadNumber 組成
  • maxThreads:線程池最大的線程數量。類似Java線程池中的maximumPoolSize
  • minSpareThreads:線程池中永遠活動的線程的數量,類似Java線程池中的corePoolSize
  • maxIdleTime:minSpareThreads到maxThreads之間的線程的最長存活時間,默認60s(60000ms)
    maxQueueSize:線程隊列的最大值,超過這個隊列再進來的線程就會直接拋棄處理,默認是Integer.MAX_VALUE

Connector 可配置的參數如下:

  • allowTrace:是否運行跟蹤HTTP的方法,默認是false;
  • connectionTimeout:網絡連接超時,單位是ms。設置爲0表示永不超時,但這樣設置是有隱患的;
  • keepAliveTimeout:長連接最大保持時間(ms)
  • maxHttpHeaderSize:HTTP請求頭信息的最大長度,超過此長度的部分不予處理。一般8KB.
  • URIEncoding:指定Tomcat容器的URL編碼格式
  • acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理,默認是10個
  • disableUploadTimeout:上傳時是否使用超時機制
  • port:端口
  • protocol:協議,有以下三種:
    • org.apache.coyote.http11.Http11Protocol和HTTP/1.1相同(默認值)
    • org.apache.coyote.http11.Http11NioProtocol(使用NIO)
    • org.apache.coyote.http11.Http11AprProtocol()
  • enableLookups:是否反查域名,取值爲true或false。爲了提高處理能力,應該設置爲false
  • bufferSize:默認是 2048 bytes
  • maxSpareThreads:最大的空閒連接數,一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。默認是50;
  • maxThreads:最多同時處理的連接數,Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數。默認200.
  • minSpareThreads:最小空閒線程數,Tomcat初始化時創建的線程數。默認是4

2. Tomcat的線程池Executor實現原理

後期補。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章