1. 程式人生 > >Tomcat8開啟APR執行模式(centos6.5)

Tomcat8開啟APR執行模式(centos6.5)

Tomcat有三種運營模式:bio、nio、apr,不同模式下Tomcat的執行效率差別比較大。

一、bio(blockingIO)

阻塞式IO,Tomcat6及以前版本預設執行模式,效能非常低下,沒有經過任何優化處理。

二、nio(noblocking IO)

非阻塞式IO,Tomcat7以後的版本預設執行模式,利用java非同步IO技術使Tomcat執行效能有所提升。

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

如果要在Tomcat6開啟NIO模式,直接修改server.xml裡的Connector節點,修改protocol為 

org.apache.coyote.http11.Http11NioProtocol,啟動生效。
<Connector port="8080" 	           protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="8543" />

Tomcat8預設配置啟動完後最後三行日誌如下:

http-nio-8180
ajp-nio-8109
說明預設以nio模式執行。

三、apr(Apache Portable Runtime)

從作業系統級別來解決非同步的IO問題,大幅度的提高效能。

必須要安裝apr和native,直接啟動就支援apr。

安裝apr

apr需要APR庫和OpenSSL相關庫。

yum install apr-devel openssl-devel

安裝native

進入Tomcat的bin目錄,比如:

/opt/soft/tomcat_8180/bin

解壓native原始碼包

tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.1.32-src/jni/native
./configure--with-apr=/usr/bin/apr-1-config--with-java-home="/opt/soft/jdk1.8.0_60" --with-ssl=yes
make
make install 
native 會被安裝到/usr/local/apr/lib

我們需要把/usr/local/apr/lib/ libtcnative-1.so.0.1.32指向Tomcat可識別路徑。

配置apr包到Tomcat可識別的路徑

15-Apr-2016 22:18:54.209 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 
The APR based Apache Tomcat Native library which allows optimal performance in production environments 
was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

Tomcat8預設apr是開啟的,配置在server.xml

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
是由於作業系統未安裝apr或者apr路徑未指到Tomcat預設可識別的路徑,則apr模式無法啟動,自動切換啟動nio模式。
cd /usr
mkdir java
cd java/
mkdir packages
cd packages/
mkdir lib
cd lib/
mkdir amd64
cd amd64/

把/usr/local/apr/lib/ libtcnative-1.so.0.1.32軟連結到上面建立的目錄。
ln -s  /usr/local/apr/lib/libtcnative-1.so.0.1.32 libtcnative-1.so
ln -s  /usr/local/apr/lib/libtcnative-1.so.0.1.32 libtcnative-1.so.0

重新啟動Tomcat看到啟動日誌最後三行


http-apr-8180
ajp-apr-8109