【Tomcat】Tomcat Connector的三种运行模式【bio、nio、apr】
Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式
bio
bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。
默认的模式,性能最差,没有经过任何优化处理和支持。
nio
nio(non-blocking I/O),Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API。拥有比传统I/O操作(bio)更好的并发运行性能。
要让Tomcat以nio模式来运行,修改配置文件:tomcat/conf/server.xml
vim tomcat/conf/server.xml
修改以下内容:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改protocol的值为org.apache.coyote.http11.Http11NioProtocol
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
重启Tomcat后生效。
apr
apr(Apache Portable Runtime/Apache可移植运行时库),Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。从操作系统级别来解决异步的IO问题,大幅度的提高性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。
要让Tomcat以apr模式来运行,必须安装apr和native
-
安装apr:
yum -y install apr apr-devel
-
安装native:
cd /usr/local/tomcat/bin/ tar xzfv tomcat-native.tar.gz cd tomcat-native-1.1.33-src/jni/native/ ./configure --with-apr=/usr/bin/apr-1-config make && make install
-
【需要安装gcc: yum -y install gcc】
安装完成之出现如下提示信息:
-
整合Tomcat apr
-
设置环境变量
方法一:在/bin/catalina.sh中增加1行:
(在echo “Using CATALINA_BASE: $CATALINA_BASE”的上一行添加)
CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
方法二:在/etc/profile中加入:
export CATALINA_OPTS=-Djava.library.path=/usr/local/apr/lib
使配置生效:
source /etc/profile
-
修改配置文件:tomcat/conf/server.xml
vim tomcat/conf/server.xml
修改以下内容:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
-
修改protocol的值为
org.apache.coyote.http11.Http11NioProtocol
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" />
-
-
重启Tomcat,启动日志出现以下内容证明此时以APR模式启动
查看Tomcat Connector运行模式
-
方法一:在http://x.x.x.x:8080/manager/status 中查看服务器状态
-
方法二:根据Tomcat启动日志信息判断
-
bio
INFO: Initializing ProtocolHandler ["http-bio-8080"] Aug 04, 2015 10:20:35 PM org.apache.coyote.AbstractProtocol init
-
nio
INFO: Initializing ProtocolHandler ["http-nio-8080"] Aug 04, 2015 10:27:58 PM org.apache.coyote.AbstractProtocol init
-
apr
INFO: Initializing ProtocolHandler ["http-apr-8080"]
Aug 04, 2015 10:33:45 PM org.apache.coyote.AbstractProtocol init
测试参考:
tomcat bio nio apr 模式性能测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix