Tomcat學習總結(15)—— Tomcat優化時的參數分析


(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的最大線程閥值,需要設置的大一些


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM