原文鏈接:http://blog.csdn.net/xyang81/article/details/51502766
Tomcat支持三種接收請求的處理方式:BIO、NIO、APR
1>、BIO模式:阻塞式I/O操作,表示Tomcat使用的是傳統Java I/O操作(即Java.io包及其子包)。Tomcat7以下版本默認情況下是以bio模式運行的,由于每個(gè)請求都要創(chuàng )建一個(gè)線(xiàn)程來(lái)處理,線(xiàn)程開(kāi)銷(xiāo)較大,不能處理高并發(fā)的場(chǎng)景,在三種模式中性能也最低。啟動(dòng)tomcat看到如下日志,表示使用的是BIO模式:
<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模式,不需要額外修改
APR 1.2+ development headers (libapr1-dev package)OpenSSL 0.9.7+ development headers (libssl-dev package)JNI headers from Java compatible JDK 1.4+GNU development environment (gcc, make)因為apr模式本質(zhì)是使用JNI技術(shù)調用操作系統IO接口,需要用到相關(guān)API的頭文件
yum install apr-develyum install openssl-develyum install gccyum install make注意:openssl庫要求在0.9.7以上版本,APR要求在1.2以上版本,用rpm -qa | grep openssl檢查本機安裝的依賴(lài)庫版本是否大于或等于apr要求的版本。
進(jìn)入tomcat的bin目錄,解壓tomcat-native.tar.gz文件,并進(jìn)入tomcat-native-1.2.7-src/native目錄,執行./configure && make && make install 命令,動(dòng)態(tài)庫默認安裝在/usr/local/apr/lib目錄下,如下圖所示:
設置LD_LIBRARY_PATH和LD_RUN_PATH環(huán)境變量,指向/usr/local/apr/lib目錄,可配置到$HOME/.profile文件中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/libexport LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib拷貝/usr/local/apr/lib目錄下所有動(dòng)態(tài)庫到/usr/lib或/lib系統共享庫搜索目錄下即可。
copy /usr/local/apr/lib/libtcnative* /usr/lib/編輯$TOMCAT_HOME/bin/catalina.sh文件,在虛擬機啟動(dòng)參數JAVA_OPTS中添加java.library.path參數,指定apr庫的路徑
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"Tomcat8以下版本,需要指定運行模式,將protocol從HTTP/1.1改成org.apache.coyote.http11.Http11AprProtocol
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"connectionTimeout="20000"redirectPort="8443" />運行Tomcat后,看到如下日志表示開(kāi)啟apr模式成功:
如果沒(méi)有配置SSL相關(guān)參數,并且開(kāi)啟了SSL,啟動(dòng)時(shí)會(huì )發(fā)生org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform異常:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />將SSLEngine的值從on改成off即可:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />Tomcat 6.x版本從6.0.32開(kāi)始就默認支持apr。Tomcat 7.x版本從7.0.30開(kāi)始就默認支持apr。因此,如果讀者使用的Tomcat版本比較陳舊的話(huà),強烈建議升級到最新的穩定版本。Tomcat官網(wǎng)APR配置:http://tomcat.apache.org/tomcat-8.0-doc/apr.html#Linux
聯(lián)系客服