Tomcat優化配置

優化1、Tomcat運行模式java

Tomcat支持三種接收請求的處理方式:BIO、NIO、APRapache

1)BIO模式:(blocking I/O)阻塞式I/O操做,表示Tomcat使用的是傳統Java I/O操做(即java.io包及其子包)。Tomcat8如下版本默認狀況下是以bio模式運行的(Tomcat8版本開始默認是以nio模式運行),因爲每一個請求都要建立一個線程來處理,線程開銷較大,不能處理高併發的場景,在三種模式中性能也最低。啓動tomcat看到以下日誌,表示使用的是BIO模式:tomcat

  

 


2)NIO模式:(new I/O)是Java SE 1.4及後續版本提供的一種新的I/O操做方式(即java.nio包及其子包)。是一個基於緩衝區、並能提供非阻塞I/O操做的Java API,它擁有比傳統I/O操做(bio)更好的併發運行性能。要讓Tomcat以nio模式來運行比較簡單,只須要在Tomcat安裝目錄/conf/server.xml文件中將以下配置:服務器

  <Connector port="8080" protocol="HTTP/1.1"          connectionTimeout="20000"          redirectPort="8443" />

   中的protocol屬性值改成:網絡

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

  原來的protocol="HTTP/1.1"表示遵循http1.1協議,同時,也是一個最原始的未經優化的通訊協議,併發

  啓動tomcat看到以下日誌,表示使用的是NIO模式:app

  

 


3)APR模式:(Apache Portable Runtime/Apache可移植運行時)是Apache HTTP服務器的支持庫,簡單理解,Tomcat將以JNI的形式調用Apache HTTP服務器的核心動態連接庫來處理文件讀取或網絡傳輸操做,從而大大地提升Tomcat對靜態文件的處理性能,就是從操做系統級別解決異步IO問題,大幅度的提升服務器的處理和響應性能, 也是Tomcat運行高併發應用的首選模式。異步

 Tomcat 6.x版本從6.0.32開始就默認支持apr。
 Tomcat 7.x版本從7.0.30開始就默認支持apr。

  Tomcat apr運行模式的配置是三種運行模式之中相對比較麻煩的一種。據官方文檔所述,Tomcat apr須要如下三個組件的支持:高併發

  • APR library[APR庫]
  • JNI wrappers for APR used by Tomcat (libtcnative)[簡單地說,若是是在Windows操做系統上,就是一個名爲tcnative-1.dll的動態連接庫文件]
  • OpenSSL libraries[OpenSSL庫]

  APR啓用步驟性能

    1>安裝依賴包

     yum install make gcc openssl-devel -y

 

    2>下載安裝APR包

     在官網下載(http://apr.apache.org/download.cgi):安裝包 apr-1.7.0.tar.gz,apr-util-1.6.1.tar.gz

     wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.7.0.tar.gz

     wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz

     tar -xf apr-1.7.0.tar.gz

     cd apr-1.7.0

     ./configure --prefix=/usr/local/apr  && make  && make install

     tar -xf apr-util-1.6.1.tar.gz

     cd apr-util-1.6.1

     ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr  &&  make  &&  make install

 

    3>在Tomcat中安裝APR動態庫

     cd  apache-tomcat-7.0.94/bin

     tar  -xf  tomcat-native.tar.gz

     cd tomcat-native-1.1.32-src

     ./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr/   &&  make  &&  make  install

    

    4>配置APR本地庫到系統共享庫搜索路徑中

      方式一:

        設置LD_LIBRARY_PATH和LD_RUN_PATH環境變量,指向/usr/local/apr/lib目錄,可配置到$HOME/.profile文件中
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
        export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib

      方式二:

        拷貝/usr/local/apr/lib目錄下全部動態庫到/usr/lib或/lib系統共享庫搜索目錄下便可。
        cp /usr/local/apr/lib/libtcnative* /usr/lib/

      方式三(推薦):

        編輯$TOMCAT_HOME/bin/catalina.sh文件,在虛擬機啓動參數JAVA_OPTS中添加java.library.path參數,指定apr庫的路徑
        JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"

 

    5>修改Tomcat中conf/server.xml的配置

      <Connector port="8080" protocol="HTTP/1.1"            connectionTimeout="20000"              redirectPort="8443" />

      中的protocol屬性值改成:

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

    6>運行Tomcat後,看到以下日誌表示APR模式啓動成功:

      

 

    注意:若是沒有配置SSL相關參數,而且開啓了SSL,啓動時會發生org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform異常:

     

    若是不想啓用SSL,將server.xml中apr模式下ssl關閉便可:

    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

    將SSLEngine的值從on改爲off便可:

     <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />

4)禁用AJP協議

  經過禁用AJP協議,達到在集羣的時候提升處理請求的時間。

  

  咱們要作的就是要將此協議禁用,禁用方法:在conf/server.xml中,將

   <Connector port="8112" protocol="AJP/1.3" redirectPort="8443" />

  這行註釋掉,從新啓動tomcat,能夠看到控制檯上已經不存在上圖紅框中所示

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

相關文章
相關標籤/搜索