博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
修改Tomcat Connector运行模式,优化Tomcat运行性能
阅读量:7144 次
发布时间:2019-06-29

本文共 2108 字,大约阅读时间需要 7 分钟。

Tomcat是一个小型的轻量级,也是JavaEE开发人员最常用的服务器之一。不过,许多开发人员不知道的是,Tomcat Connector(Tomcat)有bionioapr三种运行模式,那么这三种运行模式有什么区别呢,我们又如何修改Tomcat Connector的运行模式来提高Tomcat的运行性能呢?

下面,我们先大致了解Tomcat Connector的三种运行模式。

bio

bio(blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下,就是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。【点击这里可以查看的相关信息】

nio

nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即.nio包及其子包)。Java nio是一个基于、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。要让Tomcat以nio模式来运行也比较简单,我们只需要在Tomcat目录/conf/server.xml文件中将如下配置:

中的protocol属性值改为org.apache.coyote.http11.Http11NioProtocol即可:

此时,我们就可以在Tomcat Manager中看到当前服务器状态页面的HTTP协议的Connector运行模式已经从http-bio-8080变成了http-nio-8080

apr

apr(Apache Portable Runtime/Apache可移植运行时),是Apache HTTP服务器的支持库。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。如果我们的Tomcat不是在apr模式下运行,在启动Tomcat的时候,我们可以在日志信息中看到类似如下信息:

2013-8-6 16:17:49 org.apache.catalina.core.AprLifecycleListener init信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the .library.path: xxx/xxx(这里是路径信息)

Tomcat apr运行模式的配置是三种运行模式之中相对比较麻烦的一种。据官方文档所述,Tomcat apr需要以下三个的支持:

  • APR library[APR库]
  • JNI wrappers for APR used by Tomcat (libtcnative)[简单地说,如果是在Windows操作系统上,就是一个名为tcnative-1.dll的文件]
  • OpenSSL libraries[OpenSSL库]

此外,与配置nio运行模式一样,也需要将对应的Connector节点的protocol属性值改为org.apache.coyote.http11.Http11AprProtocol。 不过,上述繁琐的操作都是Tomcat 7.0.30之前的版本才需要这样配置,从Tomcat 7.0.30版本开始,Tomcat已经自带了tcnative-1.dll等文件,并且默认就是在Tomcat apr模式下运行,因此我们只需要下载最新版本的Tomcat直接使用即可。

此外,即使不使用Tomcat Manager,我们也可以区分出Tomcat当前的运行模式。如果以不同的Connector模式启动,在Tomcat的启动日志信息中一般会包含类似如下的不同内容,我们只需要根据这些信息即可判断出当前Tomcat的运行模式:

bio
信息: Starting ProtocolHandler ["http-bio-8080"] 2013-8-6 16:17:50 org.apache.coyote.AbstractProtocol start
nio
信息: Starting ProtocolHandler ["http-nio-8080"] 2013-8-6 16:59:53 org.apache.coyote.AbstractProtocol start
apr
信息: Starting ProtocolHandler ["http-apr-8080"] 2013-8-6 17:03:07 org.apache.coyote.AbstractProtocol start

转载地址:http://hzwgl.baihongyu.com/

你可能感兴趣的文章
【转载】学习新东西的唯一方法
查看>>
[转]Android dex分包方案
查看>>
关于Redis的启动过程
查看>>
Android 按二次后退键退出应用程序
查看>>
Springboot监控之一:SpringBoot四大神器之Actuator之2--springboot健康检查
查看>>
[唐诗]秋夜喜遇王处士-王绩
查看>>
一个简单多任务内核实例的分析【转】
查看>>
WPF 3D 小小小小引擎 - ·WPF 3D变换应用
查看>>
又一道简单题&&Ladygod(两道思维水题)
查看>>
golang笔记——函数与方法
查看>>
Linux LVM硬盘管理及LVM扩容
查看>>
针对某个数据库error做systemstate dump
查看>>
iOS开发--SWRevealViewController
查看>>
JSP--百度百科
查看>>
TCP/IP详解学习笔记(2)-数据链路层
查看>>
VMware+Windgb+Win7内核驱动调试
查看>>
initWithFrame、initWithCoder、awakeFromNib的区别和调用次序 & UIViewController生命周期 查缺补漏...
查看>>
客户端请求新页面
查看>>
VMware安装CentOS时,无法以图形界面安装解决办法
查看>>
SpringMvc文件资源防止被外链链接
查看>>