一、自身調整 (修改Tomcat自身的配置文件參數)
1、修改conf/server.xml文件中 將<Connector 標籤中protocol屬性值替換成:
"org.apache.coyote.http11.Http11NioProtocol"
原因:將Apache Tomcat6中支持了Java語言的特性 NIO( New I/O)打開,在tomcat6在默認的配置選項中是沒有把NIO功能打開。使用NI在服務器端會有更好的性能,加強服務器端對併發處理的性能。
2、修改conf/server.xml文件中
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="500"
minSpareThreads="400" />
<Connector
executor="tomcatThreadPool"
port="8208"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="30000" // 連接超時時間默認
enableLookups="false" //不使用DNS查詢減少開銷
redirectPort="8443"
URIEncoding="UTF-8" //URL轉碼處理
acceptCount="1000" /> //指定當所有可以使用線程數都被使用時可以放到處理隊列中的請求數超過這個數的請求將不予處理
二、外部環境調整
調整非Tomcat組件例如Tomcat運行的操作系統和運行Tomcat的java虛擬機。
1、 操作系統性能優化:
windows下默認打開文件數是2000; linux下是1024 vi /etc/prfile 加入ulimit -n 4096就把linux改成打開文件最大數爲4096
2、jvm (-Xmx)堆的設置不要大於實際物理內存的80%;-Xmx與-Xms大小設置一樣這樣可以減少對系統申請的開銷。Tomcat默認內存爲128MB。
有關能夠創建線程的最大個數的估算公式:
(MaxProcessMemory - JVMMemory - ReservedOsMemory)/ (ThreadStackSize) = Number of threads
如:2G內存、1.0GB JVM:(2GB-1.0Gb-120MB)/(1MB) = ~880 threads
預留120 爲系統dll的加載開銷,JDK1.5以上默認的棧大小爲1M每線程
Linux :添加到catalina.sh 文件中
JAVA_OPTS= -server –Xms1024m –Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m
-client,-server 這兩個參數用於設置虛擬機使用何種運行模式,一定要作爲第一個參數,client模式啓動比較快,但運行時性能和內存管理效率不如server模式,通常用於客戶端應用程序。相反,server模式啓動比client慢,但可獲得更高的運行性能。在windows上,缺省的虛擬機類型爲client模式,如果要使用server模式,就需要在啓動虛擬機時加-server參數,以獲得更高性能,對服務器端應用,推薦採用server模式,尤其是多個CPU的系統。在Linux,Solaris上缺省採用server模式。 此外,在多cup下建議用server模式。