linux centos tomcat8配置apr模式
发布日期: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模式的特点,可以更好地选择适合自身需求的方案:

  • BIO:适合连接数目比较少且每个连接的操作耗时较长的场景。如传统的文件服务器。
  • NIO:适合连接数目和每个连接操作耗时都相对较短的场景。如即时聊天系统。
  • AIO:适合需要支持大量并发连接且每个连接耗时虽长的情况。数据库索引生成、虚拟化等应用都会受益于AIO技术。

  • 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表现出色,顺利应对千万级的并发访问挑战。

    上一篇:linux centos 安装 docker-compose 1.27.4
    下一篇:Linux cat 命令的进化版:Bat 0.25 正式发布,行压缩功能亮点十足!

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年04月22日 07时48分02秒