tomcat 優化--APR協議

Tomcat是一個小型的輕量級應用服務器,也是JavaEE開發人員最經常使用的服務器之一。不過,許多開發人員不知道的是,Tomcat Connector(Tomcat鏈接器)有bionioapr三種運行模式,那麼這三種運行模式有什麼區別呢,咱們又如何修改Tomcat Connector的運行模式來提升Tomcat的運行性能呢?java

 

下面,咱們先大體瞭解Tomcat Connector的三種運行模式。python

 

BIO

bio(blocking I/O),顧名思義,即阻塞式I/O操做,表示Tomcat使用的是傳統的Java I/O操做(即java.io包及其子包)。Tomcat在默認狀況下,就是以bio模式運行的。遺憾的是,就通常而言,bio模式是三種運行模式中性能最低的一種。咱們能夠經過Tomcat Manager來查看服務器的當前狀態。linux

 

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)更好的併發運行性能。要讓Tomcat以nio模式來運行也比較簡單,咱們只須要在Tomcat安裝目錄/conf/server.xml文件中將以下配置:apache

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

中的protocol屬性值改成org.apache.coyote.http11.Http11NioProtocol便可:json

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

此時,咱們就能夠在Tomcat Manager中看到當前服務器狀態頁面的HTTP協議的Connector運行模式已經從http-bio-8080變成了http-nio-8080ubuntu

 

APR

apr(Apache Portable Runtime/Apache可移植運行時),是Apache HTTP服務器的支持庫。你能夠簡單地理解爲,Tomcat將以JNI的形式調用Apache HTTP服務器的核心動態連接庫來處理文件讀取或網絡傳輸操做,從而大大地提升Tomcat對靜態文件的處理性能。 Tomcat apr也是在Tomcat上運行高併發應用的首選模式。若是咱們的Tomcat不是在apr模式下運行,在啓動Tomcat的時候,咱們能夠在日誌信息中看到相似以下信息:windows

2013-8-6 16:17:49 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: xxx/xxx(這裏是路徑信息)

 

此外,與配置nio運行模式同樣,也須要將對應的Connector節點的protocol屬性值改成org.apache.coyote.http11.Http11AprProtocol。 不過,上述繁瑣的操做都是Tomcat 7.0.30以前的版本才須要這樣配置,從Tomcat 7.0.30版本開始,Tomcat已經自帶了tcnative-1.dll等文件,而且默認就是在Tomcat apr模式下運行,所以咱們只須要下載最新版本的Tomcat直接使用便可。centos

 

 

APR安裝

一 windows下安裝
直接拷貝tcnative-1.dll到TOMCAT_HOME/bin目錄下,啓動便可tomcat

二 linux centos4.8或者ubuntu10.10 server安裝服務器

1. 下載包

    apr-1.5.2.tar.gz

    apr-iconv-1.2.1.tar.gz

    apr-util-1.5.4.tar.gz

    tomcat-native-1.1.34-src.tar.gz

2.  tomcat 、jdk安裝(略)

3. 安裝apr

tar zxvf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make
make install

4. 安裝apr-iconv

tar -zxvf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make
make install

5. 安裝apr-util

tar zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make
make install

6. 安裝tomcat-native

tar zxvf tomcat-native-1.1.34-src.tar.gz
cd tomcat-native-1.1.34-src/jni/native  
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.7.0_23
make
make install

7. 添加環境變量

vi /etc/profile #在他文件末尾處添加下面的變量
# apr
export LD_LIBRARY_PATH=/usr/local/apr/lib
執行
source /etc/profile
此時環境變量生效果

8 .  配置tomcat

將對應的Connector節點的protocol屬性值改成org.apache.coyote.http11.Http11AprProtoc

9. 啓動tomcat,就能夠看到以下信息,表示配置成功

ul 28, 2017 11:43:06 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: Loaded APR based Apache Tomcat Native library 1.1.34 using APR version 1.5.2.
Jul 28, 2017 11:43:06 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Jul 28, 2017 11:43:06 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-apr-8080"]
Jul 28, 2017 11:43:06 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 965 ms
相關文章
相關標籤/搜索