Tomcat的基本優化(一)

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

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

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

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

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

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

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

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

     說明:異步

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

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.

參考配置以下:

<Connector  port="8080"  protocol="  org.apache.coyote.http11.Http11AprProtocol  "         URIEncoding="UTF-8"       

 maxConnections="10000"

 maxThreads="2000"   

 acceptCount="2000"       

 minSpareThreads="100"       

 compression="on"         

 compressionMinSize="2048"         compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"     

  enableLookups="false"  

 disableUploadTimeout="true"   

 connectionTimeout="20000"

 

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

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

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

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

相關文章
相關標籤/搜索