<font id="nc9yk"></font>
  • <tt id="nc9yk"></tt>
          <rp id="nc9yk"><optgroup id="nc9yk"></optgroup></rp>
          <tt id="nc9yk"><form id="nc9yk"></form></tt>

            <cite id="nc9yk"></cite>

            使用Tomcat Native提升Tomcat IO效率的方法詳解

             更新時間:2020年12月12日 08:54:47   作者:flydean程序那些事  
            這篇文章主要介紹了使用Tomcat Native提升Tomcat IO效率的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

            簡介

            IO有很多種,從最開始的Block IO,到nonblocking IO,再到IO多路復用和異步IO,一步一步的將IO的性能提升做到極致。

            今天我們要介紹一下怎么使用Tomcat Native來提升Tomcat IO的效率。

            Tomcat的連接方式

            Tomcat中使用連接器來處理與外部客戶端的通信。Connecter主要用來接受外部客戶端的請求,并轉交給處理引擎處理。

            在Tomcat中有兩種Connector。一種是 HTTP connector, 一種是AJP connector。

            HTTP connector大家應該很好理解,它也是tomcat默認使用的連接器。

            還有一個連接器叫做AJP,AJP主要是用來和web服務器進行通信用的,因為AJP協議的速度要比HTTP的快,所以AJP除了用來和其他webserver進行通信之外,還可以通過AJP來構建tomcat集群。

            這兩種方式都支持4中協議,分別是BIO,NIO,NIO2和APR。

            #以下四種Connector實現都是直接處理來自客戶端Http請求
            org.apache.coyote.http11.Http11Protocol : 支持HTTP/1.1 協議的連接器。
            
            org.apache.coyote.http11.Http11NioProtocol : 支持HTTP/1.1 協議+New IO的連接器。
            
            org.apache.coyote.http11.Http11Nio2Protocol : 支持HTTP/1.1 協議+New IO2的連接器。
            
            org.apache.coyote.http11.Http11AprProtocol : 使用APR(Apache portable runtime)技術的連接器,利用Native
            
            
            #以下四種實現方法則是與web server打交道
            org.apache.coyote.ajp.AjpProtocol:使用AJP協議的連接器,實現與web server(如Apache httpd)之間的通信
            
            org.apache.coyote.ajp.AjpNioProtocol:SJP協議+ New IO
            
            org.apache.coyote.ajp.AjpNio2Protocol:SJP協議+ New IO2
            
            org.apache.coyote.ajp.AjpAprProtocol:AJP + APR

            講下他們的區別,BIO就是block IO是最最基礎的IO方式, 我們通過這樣來配置:

            <Connector port=”8080” 
            protocol=”HTTP/1.1”
             
            maxThreads=”150” 
            connectionTimeout=”20000” 
            redirectPort=”8443” />

            Tomcat7以下版本在默認情況下是以bio模式運行的。自Tomcat 8.5 版本開始,Tomcat就移除了對BIO的支持。

            New IO是基于java.nio包及其子包的一種IO方式。能提供非阻塞IO方式,比傳統的BIO擁有與更加高效的運行效率。

            我們這樣配置New IO:

            <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
            connectionTimeout="20000"
            redirectPort="8443" />

            New IO和New IO2有什么區別呢?

            New IO2是tomcat8中引入的IO方式,我們可以這樣配置:

            <Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
            connectionTimeout="20000"
            redirectPort="8443" />

            apr這種方式就高級了,這個是我們今天要講解的tomcat native的主要作用。

            APR和Tomcat Native

            apr的全稱是Apache Portable Runtime,它是一個高度可移植的庫,它是Apache HTTP Server 2.x的核心。 APR有許多用途,包括訪問高級IO功能(例如sendfile,epoll和OpenSSL),操作系統級別的功能(生成隨機數,系統狀態等)和本機進程處理(共享內存,NT管道和Unix套接字)。

            Tomcat可以通過JNI的形式調用Apache HTTP服務器的核心動態鏈接庫來處理文件讀取或網絡傳輸操作,從而大大地提高Tomcat對靜態文件的處理性能。

            通過使用APR我們可以獲得如下的特性:

            • Non-blocking I/O和請求連接保持。
            • 支持OpenSSL和TLS/SSL。

            Tomcat Native是一個庫,通過這個庫,Tomcat可以使用APR。

            所以使用Tomcat Native的前提是需要安裝好APR library,OpenSSL和JDK。

            我們可以通過下面的方式來安裝apr和openssl:

            debian based linux系統:

            apt-get install libapr1.0-dev libssl-dev

            rpm based Linux 系統:

            yum install apr-devel openssl-devel

            在windows下面,tcnative是以一個dll的形式來提供的,我們直接下載使用就可以了。

            但是在linux下面,因為平臺不同,所以在linux下面tcnative是需要自行編譯的。

            一般來說我們可以在 bin/tomcat-native.tar.gz 找到tcnative的源碼包。將其解壓。

            先運行configure命令:

            ./configure --with-apr=/usr/bin/apr-1-config \
              --with-java-home=/home/jfclere/JAVA/jdk1.7.0_80/ \
              --with-ssl=yes \
              --prefix=$CATALINA_HOME

            再進行make操作:

            make && make install

            生成的lib文件將會被放入$CATALINA_HOME/lib中。

            在tomcat中使用APR

            安裝好tcnative之后,我們就可以在tomcat中使用APR了。

            先檢查一下conf/server.xml中是否有下面的配置:

            <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

            然后我們需要修改 $CATALINA_HOME/bin/setenv.sh 將tc-native 的lib文件添加到LD_LIBRARY_PATH中。

            LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
            export LD_LIBRARY_PATH

            最后添加APR的連接:

            <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
            connectionTimeout="20000"
            redirectPort="8443" />

            運行即可。

            從日志中,我們會發現下面的內容:

            org.apache.catalina.core.AprLifecycleListener init

            INFO: Loaded APR based Apache Tomcat Native library 1.x.y.

            org.apache.catalina.core.AprLifecycleListener init

            INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

            org.apache.coyote.http11.Http11AprProtocol init

            說明APR安裝完畢并且已經在被使用了。

            到此這篇關于使用Tomcat Native提升Tomcat IO效率的方法詳解的文章就介紹到這了,更多相關Tomcat Native提升Tomcat IO效率內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

            相關文章

            最新評論

            hao500彩票 www.cawwatches.com:甘德县| www.mydzs.com:汉源县| www.tradersofcamden.com:宕昌县| www.doubletmortgage.com:绵竹市| www.vsdtv.com:建平县| www.geoeconomic.com:长泰县| www.continue1.com:扶余县| www.hg10456.com:明星| www.sparroboter.com:金川县| www.0573packages.com:南安市| www.newcanaantutor.com:滦平县| www.char-o-lotranch.com:楚雄市| www.cp6335.com:镇康县| www.sanwencaipiao.com:南京市| www.293385.com:重庆市| www.chaletdemontagne.org:林口县| www.xashanjia.com:兴业县| www.fdcyxw.com:新巴尔虎左旗| www.huizhoupf.com:靖边县| www.drlitchman.com:长岭县| www.hubchicago.com:西峡县| www.inspirediversity.com:钟祥市| www.msmicrosoft.com:祁门县| www.blogsfere.com:茌平县| www.yurindex.com:广德县| www.gythe.cn:壶关县| www.whatssparkling.com:南宫市| www.lawzh.com:佛坪县| www.jamesstephenshurling.com:平罗县| www.buchuebersetzungen.com:资中县| www.cp5579.com:准格尔旗| www.rbxlw.cn:博白县| www.carrington-place.com:威海市| www.trade-address.com:霸州市| www.drjcdua.com:江华| www.tanglay.net:柳林县| www.onemiletrade.com:定陶县| www.99069ww.com:江达县| www.13902948564.com:岢岚县| www.bulgariatourguide.com:宜阳县| www.mrtentllc.com:上蔡县| www.rcybgg.com:固原市| www.thewinconcept.com:沁源县| www.resultsseekers.com:通化县| www.theminimina.com:崇义县| www.wgylj.cn:双城市| www.nicolasbessol.com:洪泽县| www.ourzw.com:河北省| www.autoloisir4x4.com:信丰县| www.elisa110.com:镇赉县| www.123win123.com:丹东市| www.rlphw.cn:永川市| www.tgase.com:双峰县| www.yongbeikeji.cn:阿鲁科尔沁旗| www.crystec.cn:黎平县| www.huoyuanch.com:北流市| www.cjbzg.cn:牙克石市| www.hdb001.com:大洼县| www.jswenzhuomjg.com:酒泉市| www.baina-edu.com:泾阳县| www.gzkequ.com:那坡县| www.gaindealsnow.com:吉木萨尔县| www.loan-guider.com:宣恩县| www.fastdiethub.com:东乌| www.lodhaamara.org:长泰县| www.lsyqsm.com:兰西县| www.tl0553.com:阿图什市| www.daogout.com:台中县| www.yzbux.com:高唐县| www.brosway-gioielli-it.com:高要市| www.zen-moa-massage.com:上蔡县| www.thisdayinmusicapps.com:新干县| www.loveyourvideo.com:黄山市| www.pme01.com:社会| www.addx-technologies.com:台北县| www.ntbdyp.com:建德市| www.accwangxiao.com:星座| www.chambres-dhotes-le-cigalon.com:承德县| www.avancemosconosur.org:隆德县| www.pentucketpride5k.com:三门县| www.99jsdc.com:黄石市| www.hroqbp.com:阳春市| www.cp7765.com:三门峡市| www.coralclay.com:彭州市|