tomcat中一共有三種運行模式,分別是:bio,nio,aprhtml
bio是阻塞式IO操做,使用的是傳統的java i/o處理方式,對於每個請求都要建立一個線程來進行處理,因此開銷較大不適合處理高併發的場景java
nio是基於java中非阻塞IO操做的API實現,比傳統的i/o處理方式有更高的併發運行性能,啓動時能夠看到:web
apr是從操做系統級別解決異步IO問題,大幅度提升服務器的併發處理性能,也是Tomcat生產環境運行的首選方式apache
目前Tomcat 8.x默認狀況下所有是運行在nio模式下,而apr的本質就是使用jni技術調用操做系統底層的IO接口,因此須要提早安裝所須要的依賴,首先是須要安裝openssl和apr,命令以下:tomcat
yum -y install openssl-devel yum -y install apr-devel
安裝以後,去tomcat官網下載native組件,native能夠當作是tomcat和apr交互的中間環節,下載地址是:http://tomcat.apache.org/download-native.cgi 這裏下載最新的版本1.2.10服務器
解壓以後上傳至服務器執行解壓並安裝:併發
tar -xvzf tomcat-native-1.2.10-src.tar.gz cd tomcat-native-1.2.10-src/native/ ./configure
若是執行./configure的時候出現下面的錯誤:異步
這種錯誤說明native須要openssl版本大於1.0.2 而目前系統版本是1.0.1e,因此須要更新版本,而yum源最新的openssl也就到1.0.1e版本,因此如今必須手動去openssl官網下載安裝包進行編譯安裝,編譯時編譯到自定義目錄和系統的openssl並存並且互不干擾,由於系統的openssl可能被一些軟件所使用,這樣通常安裝在/usr/local/下便於管理高併發
openssl官網:https://www.openssl.org/性能
下載地址是:https://www.openssl.org/source/ ,這裏下載最新版本的1.1.0e
下載以後執行以下命令安裝:
tar -xvzf openssl-1.1.0e.tar.gz cd openssl-1.1.0e/ ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl make && make install
稍等一會就安裝成功了,如今再次進入native剛纔編譯的目錄下,從新執行以下命令安裝:
./configure --with-ssl=/usr/local/openssl make && make install
其中編譯指定--with-ssl爲剛纔新安裝的目錄,不然會自動尋找系統目錄;安裝成功以後,默認位置是在:/usr/local/apr
而後進入tomcat安裝目錄,編輯配置文件:conf/server.xml
如圖所示,將默認的protocol="HTTP/1.1"修改成protocol="org.apache.coyote.http11.Http11AprProtocol"
修改完成保存並退出,而後有如下兩種方法來引入apr:
方法1:配置tomcat安裝目錄下:bin/catalina.sh文件引入apr,推薦這種方式:
如圖所示在原有變量JAVA_OPTS後面追加對應的配置便可,添加一行新的就能夠:JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"
而後保存並退出
方法2:在環境變量中加入apr的目錄,讓tomcat可使用系統變量搜索到,編輯/etc/profile在最後添加以下兩行內容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib
保存以後,執行 source /etc/profile 使配置生效
以上兩種方法都是能夠的,配置完成以後,重啓一下tomcat,而後查看日誌logs/catalina.out能夠看到http已經以apr模式啓動了