日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Tomcat Native提升Tomcat IO效率

發(fā)布時間:2024/2/28 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Tomcat Native提升Tomcat IO效率 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • Tomcat的連接方式
  • APR和Tomcat Native
  • 在tomcat中使用APR

簡介

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

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

Tomcat的連接方式

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

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

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

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

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

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

講下他們的區(qū)別,BIO就是block IO是最最基礎(chǔ)的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方式,比傳統(tǒng)的BIO擁有與更加高效的運行效率。

我們這樣配置New IO:

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

New IO和New IO2有什么區(qū)別呢?

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),操作系統(tǒng)級別的功能(生成隨機數(shù),系統(tǒng)狀態(tài)等)和本機進程處理(共享內(nèi)存,NT管道和Unix套接字)。

Tomcat可以通過JNI的形式調(diào)用Apache HTTP服務(wù)器的核心動態(tài)鏈接庫來處理文件讀取或網(wǎng)絡(luò)傳輸操作,從而大大地提高Tomcat對靜態(tài)文件的處理性能。

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

  • Non-blocking I/O和請求連接保持。
  • 支持OpenSSL和TLS/SSL。
  • Tomcat Native是一個庫,通過這個庫,Tomcat可以使用APR。

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

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

    debian based linux系統(tǒng):

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

    rpm based Linux 系統(tǒng):

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

    運行即可。

    從日志中,我們會發(fā)現(xiàn)下面的內(nèi)容:

    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 INFO: Initializing Coyote HTTP/1.1 on http-8080

    說明APR安裝完畢并且已經(jīng)在被使用了。

    本文作者:flydean程序那些事

    本文鏈接:http://www.flydean.com/tomcat-native-startup/

    本文來源:flydean的博客

    歡迎關(guān)注我的公眾號:「程序那些事」最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發(fā)現(xiàn)!

    總結(jié)

    以上是生活随笔為你收集整理的使用Tomcat Native提升Tomcat IO效率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。