Tomcat性能調優

1、服務器資源

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

 

2、配置參數調優

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

二、禁用DNS查詢,打開壓縮html

三、調整線程數 java

四、改變運行模式 web

五、禁用AJP鏈接器apache

 

3、JVM參數調優

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

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

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

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

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

 

4、禁用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」 />

 

5、調整線程數 

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" />

 

6、改變運行模式 

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"/> 

 

7、禁用AJP鏈接器

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

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

 

相關文章
相關標籤/搜索