<rp id="kut09"><nav id="kut09"></nav></rp>
<rp id="kut09"></rp>
  • <tt id="kut09"></tt>
    <tt id="kut09"><tbody id="kut09"></tbody></tt>
    1. <u id="kut09"></u>
    2. <tt id="kut09"><noscript id="kut09"></noscript></tt>
    3. 使用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效率內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

      相關文章

      最新評論

      218彩票 www.specificatii.com:兖州市| www.phone-winn4.com:盱眙县| www.jyyxnm.com:观塘区| www.jollychang.com:阿拉善盟| www.hornyhomepages.com:耒阳市| www.cxpzc.cn:昆山市| www.achetervigrxplus.com:弋阳县| www.bestpriceditemz.com:玉环县| www.szmulinsen.com:宾川县| www.uu-i.com:龙海市| www.cp55511.com:台南县| www.brillonenbarrois.org:丽江市| www.ljmyp.cn:左云县| www.racetorecoverynow.org:临武县| www.bahqb.cn:惠来县| www.story-of-us.com:景谷| www.hcsp139.com:泰州市| www.blissfuljapan.com:手机| www.ehsggs.com:兴化市| www.3gamee.com:苏尼特左旗| www.dyhdfkhm.com:莱阳市| www.wrennak.com:景德镇市| www.bgesystems.com:吉林省| www.d5828.com:深泽县| www.royaltyaffairs.com:新龙县| www.99069yy.com:噶尔县| www.3dimensions-tv.com:乃东县| www.vintage-denim.com:巫山县| www.cymjt.com:二连浩特市| www.santiagopalacios.com:高唐县| www.zghnfzw.com:青海省| www.adamandsamlove.com:乐山市| www.hg81789.com:娱乐| www.jinjin2car.com:平和县| www.smilesincovington.com:库尔勒市| www.lesblives.com:天津市| www.anthemgamegroup.com:当阳市| www.jxzfhj.com:剑河县| www.soxdeal.com:墨竹工卡县| www.dantealighieribsb.com:长兴县| www.lettresamontaigne.net:大悟县| www.donyahost.com:武夷山市| www.zsfulinmen.com:南召县| www.oversuns.com:石阡县| www.aw368.com:宜君县| www.hobigoods.com:兴宁市| www.cesnievyemekleri.com:德州市| www.awesome-book.com:潞城市| www.debian-mirror.com:乌鲁木齐市| www.maxxsaccessoires.com:塔城市| www.bjbthj.com:肥城市| www.chris-sabin.com:临夏县| www.amysplaceforyouth.org:道孚县| www.busybeesflorist.com:庆元县| www.americanbeautiesnationalpageants.com:平昌县| www.tssth.org:体育| www.soundandvisionmex.com:甘南县| www.jnddq.com:镇江市| www.21wangmi.com:汝城县| www.3dimensions-tv.com:大安市| www.alexanderday.net:海原县| www.friesenabmeyer.com:海宁市| www.qdchaoqun88.com:桐柏县| www.shopitbd.com:蒙阴县| www.shanghai-limo.com:兴宁市| www.heritage-academy.org:珠海市| www.aggressive-lawyers.com:松滋市| www.uidongmun.com:育儿| www.brwhm.com:绥宁县| www.ds779.com:普兰店市| www.perfectskinserum.org:长治市| www.taynelemon.com:揭阳市| www.hyjtyey.com:出国| www.christarobillard.com:张掖市| www.hearthemlive.com:庆元县| www.yjttw.cn:望江县| www.myumldesigner.com:沧源| www.cokhiduchai.com:棋牌| www.ykw100.com:鄯善县| www.turismogay.net:集安市| www.pzbxyx.com:乾安县| www.nicolasbessol.com:陆河县| www.campch.com:五河县| www.parcfrankston.com:金华市|