1. 程式人生 > >Tomcat性能調優

Tomcat性能調優

ptc apach 分享 div efi cat thread 配置文件 color

一、服務器資源

  服務器所能提供CPU、內存、硬盤的性能對處理能力有決定性影響。Tomcat性能可以通過提升服務器的性能來進行調優,但一般公司不會選擇這種調優方式,而使用優化配置參數來調優。

二、配置參數調優

1. JVM參數調優,即Tomcat堆虛擬內存

2、禁用DNS查詢,打開壓縮

3、調整線程數

4、改變運行模式

5、禁用AJP連接器

三、JVM參數調優

-Xms<size>          表示JVM初始化堆的大小

-Xmx<size>          表示JVM堆的最大值

-Xss<size>           是指設定每個線程的堆棧大小。

-XX:PermSize<size>      JVM初始分配的非堆內存
-XX:MaxPermSize<size>    JVM最大允許分配的非堆內存,按需分配

這兩個值的大小一般根據需要進行設置。當應用程序需要的內存超出堆的最大值時虛擬機就會提示內存溢出,並且導致應用服務崩潰。因此一般建議堆的最大值設置為可用內存的最大值的80%。在catalina.bat中,設置JAVA_OPTS=‘-Xms256m -Xmx512m‘,表示初始化內存為256MB,可以使用的最大內存為512MB。

四、禁用DNS查詢,打開壓縮

A、禁用DNS查詢

為了消除DNS查詢對性能的影響我們可以關閉DNS查詢,方式是修改server.xml文件中的enableLookups參數值:

<Connector port="8080" enableLookups="false" redirectPort="8443"  /> 

B、打開壓縮

1)compression=”on” 打開壓縮功能

2)compressionMinSize=”2048″ 啟用壓縮的輸出內容大小,這裏面默認為2KB

3)noCompressionUserAgents=”gozilla, traviata” 對於以下的瀏覽器,不啟用壓縮

4)compressableMimeType=”text/html,text/xml” 壓縮類型

<Connector port=”8080″ protocol
=”HTTP/1.1″ compression=”on” compressionMinSize=”2048″
compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain” />

五、調整線程數

Tomcat中可以通過修改minSpareThreads和maxSpareThreads的值來控制線程數。

minSpareThreads   最小備用線程數,tomcat啟動時的初始化的線程數

maxSpareThreads   最大備用線程數,一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程

maxThreads      tomcat起動的最大線程數,即同時處理的任務個數,默認值為200

acceptCount      當tomcat起動的線程數達到最大時,接受排隊的請求個數,默認值為100

web server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

六、改變運行模式

A、tomcat的3種運行模式

(1)BIO
默認的模式,性能非常低下,沒有經過任何優化處理和支持.

(2)NIO
NIO(new I/O),是Java SE 1.4及後續版本提供的一種新的I/O操作方式(即java.nio包及其子包)。Java nio是一個基於緩沖區、並能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的縮寫。它擁有比傳統I/O操作(bio)更好的並發運行性能。

(3)APR
安裝起來最困難,但是從操作系統級別來解決異步的IO問題,大幅度的提高性能。

B、優化運行模式選擇

(1)啟動NIO模式

修改server.xml裏的Connector節點,修改protocol為org.apache.coyote.http11.Http11NioProtocol

<Connector port="8080" enableLookups="false" redirectPort="8443"  protocol="org.apache.coyote.http11.Http11NioProtocol"/> 

(2)啟動APR模式

安裝apr,apr-iconv,apr-uitl,tomcat-native。添加環境變量LD_LIBRARY_PATH。

修改server.xml配置文件中protocol修改成org.apache.coyote.http11.Http11AprProtocol

<Connector port="8080" enableLookups="false" redirectPort="8443"  protocol="org.apache.coyote.http11.Http11AprProtocol"/> 

七、禁用AJP連接器

  AJPv13協議是面向包的。WEB服務器和Servlet容器通過TCP連接來交互;為了節省SOCKET創建的昂貴代價,WEB服務器會嘗試維護一個永久TCP連接到servlet容器,並且在多個請求和響應周期過程會重用連接。

<!--   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>   -->

技術分享

Tomcat性能調優