tomcat7.x配置APR高併發模式

Tomcat支持BIO/NIO/APR三種運行模式 ,性能各色春秋!html

Apr插件提升Tomcat性能
  Tomcat可使用APR來提供超強的可伸縮性和性能,更好地集成本地服務器技術.java

APR(Apache Portable Runtime)是一個高可移植庫,它是Apache HTTP Server 2.x的核心。APR有不少用途,包括訪問高級IO功能(例如sendfile,epoll和OpenSSL),OS級別功能(隨機數生成,系統狀態等等),本地進程管理(共享內存,NT管道和UNIX sockets)。這些功能可使Tomcat做爲一個一般的前臺WEB服務器,能更好地和其它本地web技術集成,整體上讓Java更有效率做爲一個高性能web服務器平臺而不是簡單做爲後臺容器。c++

00、模式比較

0一、不一樣版本的默認類型

tomcat7.x- 默認bio、tomcat8.x+默認nioweb

注意:基本arp能應對高併發(內核層次解決阻塞IO),非阻塞IO,內存佔用小相對高點。高併發也說明流量大apache

BIO:同步阻塞
  一個線程處理一個請求。缺點:併發量高時,線程數較多,浪費資源。
NIO:同步非阻塞
APR:異步非阻塞tomcat

0二、不一樣版本模式的配置

 <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
       APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL HTTP/1.1 Connector on port 8080
    -->
protocol
HTTP/1.0
HTTP/1.1
org.apache.coyote.http11.Http11Protocol     - blocking Java connector
org.apache.coyote.http11.Http11NioProtocol  - non blocking Java connector
org.apache.coyote.http11.Http11AprProtocol  - the APR/native connector

0三、運行模式的判別

斷定運行方式
Tomcat啓動的時候,能夠經過log看到Connector使用的是哪種運行模式:
Starting ProtocolHandler ["http-bio-8080"]
Starting ProtocolHandler ["http-nio-8080"]
Starting ProtocolHandler ["http-apr-8080"]服務器

0四、安裝apr支持庫

install:
APR library
JNI wrappers for APR used by Tomcat (libtcnative)
OpenSSL libraries併發

Requirements:
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)app

http://apr.apache.org/download.cgi                                                 #APRless

http://archive.apache.org/dist/tomcat/tomcat-connectors/native     #native

一、tomcat7.X演示        

http://tomcat.apache.org/tomcat-7.0-doc/apr.html

二、編譯環境準備工做

yum install -y gcc gcc-c++ make openssl-devel 

三、編譯安裝apr
yum    install  -y    apr             #有的tomcat編譯native須要高版本的apr+1.4.3,過低不行,就須要源碼編譯
./configure --prefix=/usr/local/apr
make && make install

tomcat-7.0.70/bin/
tomcat-native.tar.gz     --源碼

編譯

./configure --with-apr=/usr/local/apr/     --with-java-home=/servyou_domain/jdk1.7.0_79/   --disable-openssl-version-check  --with-ssl=yes
make && make install 

 注意:若是系統設置了jdk環境變量,就不須要制定JAVA_HOME,不對openssl版本限制,不須要加對openssl版本檢查

0五、apr的環境變量配置

一、配置到系統變量中

vi /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

二、配置APR本地庫到系統共享庫搜索路徑中

拷貝/usr/local/apr/lib目錄下全部動態庫到/usr/lib或/lib系統共享庫搜索目錄下便可。
copy /usr/local/apr/lib/libtcnative* /usr/lib/

三、配置到catalina.sh腳本中

編輯$TOMCAT_HOME/bin/catalina.sh文件,在虛擬機啓動參數JAVA_OPTS中添加java.library.path參數,指定apr庫的路徑

JAVA_OPTS="$JAVA_OPTS  -Djava.library.path=/usr/local/apr/lib"

關閉ssl,將SSLEngine的值從on改爲off便可:

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
Tomcat 6.x版本從6.0.32開始就默認支持apr
Tomcat 7.x版本從7.0.30開始就默認支持apr

0六、tomcat配置修改

一、server.xml
<Connector port="8080"

protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="1000"

maxHttpHeaderSize="8192"

acceptCount="1000"

disableUploadTimeout="true"

connectionTimeout="20000"

redirectPort="8230" />

 tomcat7.x-Connector參數

http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

http://tomcat.apache.org/tomcat-8.0-doc/config/http.html

tomcat--Connector參數解讀
<Connector
port="80" //監聽端口
protocol="HTTP/1.1" //協議
enableLookups="false" //禁止反向DNS查詢客戶端主機名
maxThreads="600" //最大線程數
minSpareThreads="100" //初始化建立的線程數
maxSpareThreads="500" //一旦建立的線程超過這個值,Tomcat就會關閉再也不須要的socket線程。在7.8取消了
acceptCount="700" //最大等待數
connectionTimeout="20000" //鏈接超時
redirectPort="8443" //重定向
/>

二、catalina.sh

export JAVA_HOME="/servyou_domain/jdk1.7.0_79"
export JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms2g -Xmx2g -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -Djava.library.path=/usr/local/apr/lib"

下面的也是能夠

CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib"
相關文章
相關標籤/搜索