tomcat 線程池調優(yōu)

基本常見的幾種調優(yōu)方式:線程,內存,使用Apache+JK+Tomcat配置(負載均衡)等
第一:不使用tomcat線程池

    <Connector port="8080" protocol="HTTP/1.1"  
                   connectionTimeout="20000"  
                   redirectPort="8443"  
                   maxThreads="800" acceptCount="1000"/>  

1:最大連接數:maxThreads
tomcat同時處理的最大線程數量
配置依據:
(1)、部署的程序偏計算型,主要利用cpu資源,應該將該參數設置小一點,減小同一時間搶占cpu資源的線程個數。
(2)、部署的程序對io、數據庫占用時間較長,線程處于等待的時間較長,應該將該參數調大一點,增加處理個數。

應該注意:如果線程數過大,那么cpu用在線程切換的時間占的比重會增大,系統(tǒng)性能會降低。

2、最大排隊數 acceptCount
當tomcat的線程數達到maxThreads后,新的請求就會排隊等待,超過排隊數的請求會被拒絕。
我一般設置和maxThreads相同。

參數的設置需要進行測試,找到一個合理的點。

第二:使用tomcat線程池
首先打開共享的線程池
之所以叫共享線程池,意思是所有的connector都可以共同使用這個線程池

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
        maxThreads="500" minSpareThreads="50"  maxIdleTime="60000"/>

配置文件中本來就有的,默認前后是注釋掉的,去掉就可以了。
然后connector中指定使用共享線程池

    <Connector port="8088" protocol="HTTP/1.1" 
               connectionTimeout="20000"  executor="tomcatThreadPool" 
               redirectPort="8448" URIEncoding="UTF-8"  />

一旦使用了線程池,則其它的線程屬性,比如 maxThreads等將被忽略 。
在運行多個Connector的狀況下,這樣處理非常有用,而且每個Connector必須設置一個maxThread值,但不希望Tomcat實例并發(fā)使用的線程最大數永遠與所有連接器maxThread數量的總和一樣高。
這是因為如果這樣處理,則需要占用太多的硬件資源。相反,您可以使用Executor元素配置一個共享線程池,而且所有的Connector都能共享這個線程池。
警告:為了讓連接器使用Executor的線程池,則在server.xml文件中,Executor必須列示在Connector之前。

下面顯示了Executor的屬性。
屬性:className、含義:Executor實現的完全限定的Java類名、默認值:org.apache.catalina.core.StandardThread-Executor。
屬性:daemon、含義:決定這一Executor的線程是否應該為后臺線程。如果JVM中的所有其他非后臺線程都結束了,則后臺線程結束。
要獲得有關后臺線程的詳細解釋,參見java.lang.Thread的Java 1.5(及更高版本)Javadoc網頁、默認值:false。
屬性:name、含義:共享線程池的名字。這是Connector為了共享線程池要引用的名字。該名字必須唯一、默認值:None;需要的參數。
屬性:namePrefix、含義:在JVM上,每個運行線程都可以有一個name 字符串。這一屬性為線程池中每個線程的name字符串設置了一個前綴,Tomcat將把線程號追加到這一前綴的后面、默認值:tomcat-exec-。
屬性:maxIdleTime、含義:在Tomcat關閉一個空閑線程之前,允許空閑線程持續(xù)的時間(以毫秒為單位)。只有當前活躍的線程數大于minSpareThread的值,才會關閉空閑線程、默認值:60000(一分鐘)。
屬性:maxThreads、含義:該線程池可以容納的最大線程數、默認值:200。
屬性:minSpareThreads、含義:Tomcat應該始終打開的最小不活躍線程數、默認值:25。
屬性:threadPriority、含義:整數值,表示線程池中所有線程的線程優(yōu)先權。
要獲得有關線程優(yōu)先權的詳細解釋,參見java.lang.Thread的Java 1.5(及更高版本)Javadoc網頁、默認值:Thread.NORM_PRIORITY

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,757評論 11 349
  • Tomcat 的缺省配置是不能穩(wěn)定長期運行的,也就是不適合生產環(huán)境,它會死機,讓你不斷重新啟動,甚至在午夜時分喚醒...
    憤怒的_菜鳥閱讀 2,182評論 0 24
  • 我走在荒蕪的混沌之處。我看不到盡頭,也看不見來路,模模糊糊仿佛有人走在我的身邊可是我卻看不見他們。我一直在找...
    墩墩不胖閱讀 269評論 2 1
  • 曾經在圖書館讓韓yl給自己算命,他說我“感情會很順利,以后會是一個好妻子”。 十月三號見面以前,我一度以為關于感情...
    拾荒者的小竹筐閱讀 221評論 0 0

友情鏈接更多精彩內容