
linux centos tomcat8配置apr模式
BIO:适合连接数目比较少且每个连接的操作耗时较长的场景。如传统的文件服务器。 NIO:适合连接数目和每个连接操作耗时都相对较短的场景。如即时聊天系统。 AIO:适合需要支持大量并发连接且每个连接耗时虽长的情况。数据库索引生成、虚拟化等应用都会受益于AIO技术。
发布日期:2025-04-05 22:17:19
浏览次数:6
分类:精选文章
本文共 2646 字,大约阅读时间需要 8 分钟。
BIO、NIO、AIO概念回顾
在Java应用开发中,Blocking I/O (BIO)、Netward-I/O (NIO)、Asynchronous I/O (AIO) 是三种常用的I/O操作模式。以下从根本上理解这三种概念,让你能够更好地选择适合的技术路线。
一、理解四种I/O模式
同步I/O:
乾独面对银行操作原做的思考,亲自持银行卡前往银行取钱。这种方式中,程序主线程自己直接处理I/O操作,read和write操作会阻塞在整个操作上完成。异步I/O:
委托一位小弟代替自己去银行取钱,之后通过某种方式获取结果(如通知或回调)。使用这种模式时,需要将数据缓冲区地址和大小传递给操作系统,操作系统则负责管理并传递结果。阻塞I/O:
类似于ATM窗口取款,用户只能在指定位置等待任务完成。这种方式下,read和write操作会阻塞当前线程直到完成。非阻塞I/O:
从 은행권한窗口取款,你可以获得一个号码并在旁边等待,系统会通知你什么时候您的号码到位。当某个I/O事件发生时,系统会将其传递给Java程序,你可以在任何时候检查是否有I/O操作完成,直到找到目标结果。Java对BIO、NIO、AIO的支持
BIO (Blocking I/O)
- 特性:同步且阻塞。
- 适用场景:简单且固定的连接场景,例如传统文件读写操作。
- 机制:每接收一个新连接会创建一个新的线程处理,这种情况下如果连接不被读写资源占用,会造成大量线程资源浪费。通过线程池机制可以进行优化。
NIO (Netward I/O)
- 特性:同步但非阻塞。
- 适用场景:可以处理多个短生命周期的连接组合(如聊天应用)。
- 机制:将每个连接请求都注册到一个多路复用器上,等到轮询到有I/O任务时再启动线程进行处理。
AIO (Asynchronous I/O)
- 特性:异步且非阻塞。
- 适用场景:需要同时支持百万级连接且每个连接耗时巨大的场景(如分布式相册或虚拟化环境)。
- 机制:完全依赖操作系统,先由OS完成I/O操作,随后再通知程序启动线程进行后续处理。
BIO、NIO、AIO的适用场景分析
通过对比这三种I/O模式的特点,可以更好地选择适合自身需求的方案:
Tomcat三种模式简介
Tomcat提供了三种运行模式:BIO、NIO和APR。这些模式背后的核心技术分别是传统Java I/O、Java NIO和Apache Portable Runtime (APR)。通过合理选择搭建模式可以优化服务器性能。
BIO模式
- 特点:传统的Java I/O操作方式,使用 Blocking I/O。
- 优点:直观且兼容性强,适合简单场景。
- 缺点:性能较差,不能处理高并发流量。
NIO模式
- 特点:使用Java NIO(java.nio包及其子包)。支持同步非阻塞I/O操作。
- 优点:性能比BIO高,适合中小规模的高并发场景。
- 缺点:比起APR模式,支持的并发规模仍有限。
APR模式
- 特点:基于Apache Portable Runtime,采用JNI方式调用Apache的核心库进行处理。Tomcat通过APR模式可以更高效地处理静态资源访问。
- 优点:性能远优于BIO和NIO,适合大规模并发访问场景。
- 缺点:需要依赖外部库,安装和配置复杂度稍高。
安装Apache APR(Tomcat APR模式步骤指南)
为了实现Tomcat的高性能运行,建议采用APR模式。以下是详细的安装指南。
1. 安装APR 1.6.3
- 下载:前往Apache APR官网下载最新版本。
- ** 解压**:将文件解压到
/usr/local/src
目录下。 - 编译配置:进入
apr
目录,运行以下命令:./configure make make install
2. 安装apr-util 1.6.1
- 下载&解压:下载并解压
apr-util-1.6.1
文件到/usr/local/src
。 - 配置&编译:进入解压目录,运行:
./configure --with-apr=/usr/local/APR --with-java-home=/path/to/jdk1.8 make make install
3. 安装apr-native
- 解压:找到
tomcat/bin/apr-native-1.2.17-src/native
文件夹。 - 编译配置:运行以下命令:
./configure --with-apr=/usr/local/APR --with-java-home=/path/to/jdk1.8 make make install
4. 环境变量设置
- 打开
/etc/profile
,添加以下内容:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/APR/lib export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/APR/lib
- 保存并重新加载环境变量:
source /etc/profile
5. Tomcat配置
- 打开
tomcat/conf/server.xml
,将coyote.http协议设置为
org.apache.coyote.http11.Http11AprProtocol`。 - 修改
tomcat-users.xml
,添加管理员账号(如图): - 最后重启Tomcat服务,并通过浏览器访问
http://localhost:8080/manager/status
确认配置是否成功。
常见疑问解答
协议濒改问题?
修改server.xml
时需要注意IVATE协议字段的位置,确保编辑正确。已成功切换到APR模式,但AJP模式未更改?
AJP模式默认情况下不支持APR,我们需要手动修改server.xml
以启用Http11Apr协议。结语
在选择Java I/O模式和Tomcat运行方式时,理解其内在机制和适用场景至关重要。从BIO到NIO再到APR,这些选项逐渐应对更高的并发需求。通过合理搭建和优化,可以让你的Tomcat表现出色,顺利应对千万级的并发访问挑战。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月22日 07时48分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux df du 命令
2025-04-06
Linux DHCP服务器
2025-04-06
Linux DNS服务器子域授权、转发器和转发域配置实例(三)
2025-04-06
Linux Docker 部署 Jenkins 详解教程
2025-04-06
Linux Driver 入门 - Allocating Device Numbers
2025-04-06
LINUX du/df/free查看内存/磁盘剩余空间
2025-04-06
linux dump 文件在哪
2025-04-06
linux echo设置颜色
2025-04-06
LINUX errno
2025-04-06
Linux expect 用法
2025-04-06
linux expect案例用法
2025-04-06
linux file system
2025-04-06
Linux find 匹配文件内容
2025-04-06
linux find 报错路径必须在表达式之前
2025-04-06
Linux find命令使用详解
2025-04-06
Linux firewalld防火墙常用
2025-04-06
Linux free命令详解(转)
2025-04-06
Linux GCC常用命令总结
2025-04-06
linux git pull/push时不用输入账号密码的设置
2025-04-06