简介
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安装完毕并且已经在被使用了。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]