Tomcat支持三種接收請求的處理方式:BIO、NIO、APR
1.BIO模式
阻塞式I/O操作,表示Tomcat使用的是傳統Java I/O操作(即java.io包及其子包)。Tomcat7以下版本默認情況下是以bio模式運行的,由於每個請求都要創建一個線程來處理,線程開銷較大,不能處理高併發的場景,在三種模式中性能也最低。
2.NIO模式
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" />
修改爲
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
備註:Tomcat8以上版本,默認使用的就是NIO模式,不需要修改 。
3.APR模式
從操作系統級別解決異步IO問題,大幅度的提高服務器的處理和響應性能, 也是Tomcat運行高併發應用的首選模式。
啓用這種模式稍微麻煩一些,需要安裝一些依賴庫,下面以redhat6.5版環境下Tomcat-8.5.35爲例。
安裝步聚:
首先檢查是否存在openssl環境
openssl version
如果版本低於1.0.2則升級openssl版本
1.安裝openssl庫
openssl ftp服務器地址:http://ftp.openssl.org/source
wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz
tar zxf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config --prefix=/home/tsaip/openssl #修改爲自己本機的安裝目錄
make depend
make
make install
以上安裝方式沒有覆蓋系統自帶的openssl
需要使用openssl的時候需要指定該路徑
2.安裝 apr 和 apr-util
#下載最新的包
cd /home/tsaip
wget http://apache.fayea.com/apr/apr-1.7.0.tar.gz
wget http://apache.fayea.com/apr/apr-util-1.6.1.tar.gz
#unzip the package
tar -zxvf apr-1.7.0.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
#安裝the apr and apr-util
cd apr-1.7.0
./configure --prefix=/home/tsaip/apr
make
make install
cd ..
cd apr-util-1.6.1
./configure --prefix=/home/tsaip/apr-util --with-apr=/home/tsaip/apr
make
make insatll
3.安裝tomcat-native
tomcat bin目錄下自帶tomcat-native.tar.gz
tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.18-src/native
./configure --with-apr=/home/tsaip/apr --with-ssl=/home/tsaip/openssl && make && make install
注意查看日誌 獲取apr路徑
增加啓動參數tomcat bin目錄下catalina.sh文件
增加
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib" #修改爲apr路徑
修改tomcat conf 下server.xml文件
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />
以上配置修改完成之後啓動tomcat
出現http-apr-port 標識配置成功