(1)、maxHttpHeaderSize=”8192”
此選項用於配置:來自於客戶端請求的Request和Response的HTTP header
的最大長度,以字節計算。如果不設置,該屬性為4096(4K)。
(2)、maxThreads="512"
Connector創建的請求處理線程的最大值,它決定了能夠同時處理並發請求的最
大值。如果不指定,該屬性值為200。Tomcat的線程數量太多會導致切換過多,性能
下降嚴重。這個數量應該是你單個機器的承載能力,壓力測試下得出的結果。不可任意
加大。一般情況下,256-512個已經非常高的數值了。
(3)、minSpareThreads="100"
tomcat初始化時創建的線程數,即最小工作線程數目。
(4)、maxSpareThreads="300"
tomcat所允許的最大線程數,一旦創建的線程超過這個數,Tomcat就將關閉不
再需要的Socket線程。
(5)、enableLookups="false"
使用允許DNS查詢,通常情況下設置為false。如果為true則tomcat會損耗一
部分系統性能。
(6)、redirectPort="8443"
這里系統默認的,它指定轉發端口,如果當前只支持non-SSL請求,在需要安全
通信的場所,將把客戶請求轉發至SSL的redirectPort端口。
(7)、acceptCount=“200”
當所有請求處理線程都被占用時,允許接收請求隊列的最大長度。當隊列已滿時,
任何收到的請求都將被拒絕。缺省值為10。
(8)、connectionTimeout="50000"
Connector接收連接后,等待提供請求URI的時間,缺省值為60000(60秒)。
(9)、disableUploadTimeout="true"
該標志位表明當執行servlet時,是否允許servlet容器使用一個不同的、更長的
連接超時。啟用該標志位將導致在上傳數據時,要么使用更長的時間完成上傳,要么
出現更長的超時。如果不指定,該屬性為“false”。
(10)、有時不光要優化tomcat,同時還需要更改Linux的一些系統參數。如果WEB
服務器進行壓力測試時報socket不足,則些可以對/etc/security/limits.conf進行相
應修改:
* soft nofile 57766
* hard nofile 65535
二、優化tomcat啟動的初始內存設置($TOMCAT_HOME/bin/catalina.sh)
JAVA_OPTS="-server -Xms2048M -Xmx2048M -Xss128k -XX:+AggressiveOpts -XX:+UseParallelGC -XX:+UseBiasedLocking"
參數詳解:
(1)、-Xms2048M
Java虛擬機初始化時使用的內存大小,為了減少tomcat頻繁的申請內存,此參數
應該和Xmx設置的參數一樣大。
(2)、-Xmx2048M
JAVA虛擬機可以使用的最大內存,此參數的最大設置不允許超過物理內存的90%。
(3)、-XX:+AggressiveOpts
加快編譯
(4)、-Xss128k
設置tomcat每增加一個線程(Thread)就會立即消耗128K內存,最佳值應該是128,
默認值是512K。見意256K大小,這個對性能影響較大,需要多次測試。減少這個值可
以增加一個進程內的線程數量。
(5)、-XX:+UseParallelGC
一些測試表明當非64位系統,並且非高性能服務器時,這個選項會造成垃圾回收
變慢。(此選項決定對垃圾回收是否采用多線程)
(6)、-XX:+UseBiasedLocking"
非競爭性的同步選項,鎖機制的性能改善。
(7)、-XX:PermSize=256m
最小堆大小,一般把內存不足時就是把這個空間不足。默認為物理內存的1/4。
(8)、-XX:+DisableExplicitGC
禁止System.gc(),免得程序員誤調用gc方法影響性能。
下面給出見意設置:
JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking"
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxHttpHeaderSize="8192"
minProcessors="100"
maxProcessors="5000"
maxThreads="5000"
minSpareThreads="1000"
maxSpareThreads="4000"
enableLookups="false"
acceptCount="3500"
disableUploadTimeout="true"
connectionTimeout="20000"
debug="0"
redirectPort="8443" />
maxThreads:Tomcat可創建的最大的線程數,每一個線程處理一個請求;
minSpareThreads:最小備用線程數,tomcat啟動時的初始化的線程數;
maxSpareThreads:最大備用線程數,一旦創建的線程超過這個值,Tomcat就會關閉(應該有個超時時間吧,超時后關閉)不再需要的socket線程;
所以maxThreads決定了tomcat的最大線程閥值,需要設置的大一些