生產環境入門: Tomcat的基本優化【一】

java -Xms512m -Xmx512m -jar my.jar

Tomcat默認的配置已是通過優化的了,留給咱們可優化的空間很小,我     們主要能調整的是:跟具體使用場景相關的設置,大體有: javascript

1:合理分配Tomcat須要的內存     這個是在啓動Tomcat的時候設置catalina.sh中的JAVA_OPTS,常見設置以下:

(1)-server:啓用JDK的Server版

(2)-Xms:虛擬機初始化時的最小內存

(3)-Xmx:虛擬機可以使用的最大內存(建議到物理內存的80%)

(4)-XX:PermSize:持久代初始值

(5)-XX:MaxPermSize:持久代最大內存(默認是32M)

(6)-XX:MaxNewSize:新生代內存的最大內存(默認是16M)

說明:css

(1)通常設置-Xms、-Xmx相等以免在每次GC後調整堆的大小。由於默認空餘堆內存小於40%時,JVM就會增大堆直到-Xmx的最大限制;空餘堆內存大於70%時,JVM會減小堆直到-Xms的最小限制
(2)察看配置是否生效:jmap  -heap  tomcat的進程號html

2:Tomcat自己的配置優化     在server.xml中的  <Connector>中配置,常見設置以下:

(1)maxConnections  :最大鏈接數,對BIO模式,默認等於maxThreads  ;對NIO默認10000;     對APR/native默認8192

(2)maxThreads:最大線程數,即同時處理的任務個數,默認值爲200

(3)acceptCount:當處理任務的線程數達到最大時,接受排隊的請求個數,默認100

(4)minSpareThreads:最小空閒線程數,默認10

(5)compression  :設置是否開啓GZip壓縮

(6)compressableMimeType:哪些類型須要壓縮,默認是text/html,text/xml,text/plain

(7)compressionMinSize:啓用壓縮的輸出內容大小,默認爲2048

(8)enableLookups:是否反查域名,爲了提升處理能力,應設置爲  false

(9)connectionTimeout:網絡鏈接超時,單位毫秒。設置爲  -1  表示永不超時,一般可設置  爲2000毫秒。

   說明:

(1)若是要加大併發鏈接數,應同時加大maxThreads和acceptCount,能夠兩個設置同樣

(2)WebServer容許的最大鏈接數還受制於操做系統的內核參數設置,可經過ulimit  -a  查看

(3)若是配置了<Executor>,在<Connector>中經過executor屬性指定參照<Executor>,那麼     <Connector>中關於線程的配置失效,以<Executor>中配置爲準

3:關於BIO/NIO/APR

(1)BIO是最穩定最老的一個鏈接器,是採用阻塞的方式,意味着每一個鏈接線程綁定到每一個     Http請求,直到得到Http響應返回,若是Http客戶端請求的是keep-Alive鏈接,那麼這些     鏈接也許一直保持着直至達到timeout時間,這期間不能用於其它請求。

(2)NIO是使用Java的異步IO技術,不作阻塞,要使用的話,直接修改server.xml裏的     Connector節點,修改protocol爲  :     protocol="org.apache.coyote.http11.Http11NioProtocol"

(3)APR是使用原生C語言編寫的非堵塞I/O,可是須要安裝apr和native,直接啓動就支持     apr,能大幅度提高性能。使用時指定protocol爲     protocol=「org.apache.coyote.http11.Http11AprProtocol」  。     能夠到http://apr.apache.org/download.cgi去下載,大體的安裝步驟以下:

A:安裝apr     ./configure  --prefix=/usr/local/apr     make    make  install

B:安裝apr-iconv     ./configure  --prefix=/usr/local/apr-iconv  --with-apr=/usr/local/apr

make make install

C:安裝apr-util     ./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr  --with-apr-     iconv=/usr/local/apr-iconv/bin/apriconv     make    make  install

D:安裝tomcat-native  ,就在Tomcat的bin下自帶     tar  zxvf  tomcat-native.tar.gz     cd  tomcat-native-1.1.29-src/jni/native     ./configure  --with-apr=/usr/local/apr     make    make  install

 E:設置  apr  的環境變量     進入Tomcat的bin路徑下,打開catalina.sh,在文件的#!/bin/sh下添加以下內容:     LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib  export  LD_LIBRARY_PATH             這樣就只是給這個TOMCAT添加了APR,不破壞其它TOMCAT的配置 G:從新啓動Tomcat,查看日誌信息,應該有相似以下的信息:     org.apache.catalina.core.AprLifecycleListener.init  Loaded  APR  based  Apache     Tomcat  Native  library  1.1.29  using  APR  version  1.5.0.

 

優化主要是對Tomcat作的,主要有幾方面:

一、在bin/catalina.bat文件中加入下面參數,對JVM進行優化,至於這一大駝參數的做用及說明,你們到網上找找,應該有不少的,如:http://www.mzone.cc/article/321.htmljava

set JAVA_OPTS=
-server 
-Xms1000M 
-Xmx1000M   #-Xms與-Xmx設成同樣的值,避免JVM由於頻繁的GC致使性能大起大落
-Xss512k 
-XX:+AggressiveOpts 
-XX:+UseBiasedLocking 
-XX:PermSize=64M 
-XX:MaxPermSize=300M 
-XX:+DisableExplicitGC 
-XX:MaxTenuringThreshold=31 
-XX:+UseConcMarkSweepGC 
-XX:+UseParNewGC  
-XX:+CMSParallelRemarkEnabled 
-XX:+UseCMSCompactAtFullCollection 
-XX:LargePageSizeInBytes=128m  
-XX:+UseFastAccessorMethods 
-XX:+UseCMSInitiatingOccupancyOnly 
-Djava.awt.headless=true

上述這樣的配置,基本上能夠達到:系統響應時間增快,JVM回收速度增快同時又不影響系統的響應率
,JVM內存最大化利用,線程阻塞狀況最小化.apache


Tomcat鏈接參數的優化,主要是針對吞吐量作優化:

修改conf/server.xml文件,把原來tomcat

<Connector port="8080" protocol="HTTP/1.1" /> 

修改協議,修改最大線程,開啓tomcat的gzip等等網絡

改爲下面的內容併發

<Connector port="8080" protocol="HTTP/1.1"
           URIEncoding="UTF-8"  
           minSpareThreads="25" 
           maxSpareThreads="75"
           enableLookups="false" 
           disableUploadTimeout="true" 
           connectionTimeout="20000"
           acceptCount="1500"   
           maxThreads="1500" 
           maxProcessors="1000" 
           minProcessors="5"
           useURIValidationHack="false"
           compression="on" 
           compressionMinSize="1024"
           compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
           redirectPort="8443"/>

Tomcat中Java垃圾收集調優(JVM垃圾收集器如何選擇?):

http://blog.csdn.net/aisoo/article/details/8263841

長鏈接和短鏈接的性能測試:less

http://blog.csdn.net/ystyaoshengting/article/details/49300003異步

tomcat長鏈接、短鏈接配置及用途:

http://blog.csdn.net/ystyaoshengting/article/details/49512069

何時用長鏈接,短鏈接?(下面博文最後面)

http://www.cnblogs.com/0201zcr/p/4694945.html

Tomcat的四種基於HTTP協議的Connector性能比較:
http://www.cnblogs.com/sunxucool/p/3227366.html

Tomcat 7優化前及優化後的性能對比:
http://my.oschina.net/lianss/blog/272230?fromerr=rcI9PseP#OSC_h2_1

相關文章
相關標籤/搜索