zoukankan      html  css  js  c++  java
  • 【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 模式性能测试
  • 相关阅读:
    【ZJOI2017】树状数组
    【ZJOI2014】力
    【WC2017】挑战
    kube event 事件监控
    k8s nginx-ingress 504 timeout
    k8s 工具集
    jvm 性能调优工具之 jmap
    Elasticsearch unassigned 故障排查
    harbor API 与tag 清理
    前后端分离文档
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/8036650.html
Copyright © 2011-2022 走看看