• tomcat7.x配置APR高并发模式


    Tomcat支持BIO/NIO/APR三种运行模式 ,性能各色春秋!

    Apr插件提高Tomcat性能
      Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术.

    APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心。APR有很多用途,包括访问高级IO功能(例如sendfile,epoll和OpenSSL),OS级别功能(随机数生成,系统状态等等),本地进程管理(共享内存,NT管道和UNIX sockets)。这些功能可以使Tomcat作为一个通常的前台WEB服务器,能更好地和其它本地web技术集成,总体上让Java更有效率作为一个高性能web服务器平台而不是简单作为后台容器。

    00、模式比较

    01、不同版本的默认类型

    tomcat7.x- 默认bio、tomcat8.x+默认nio

    注意:基本arp能应对高并发(内核层次解决阻塞IO),非阻塞IO,内存占用小相对高点。高并发也说明流量大

    BIO:同步阻塞
      一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。
    NIO:同步非阻塞
    APR:异步非阻塞

    02、不同版本模式的配置

     <!-- A "Connector" represents an endpoint by which requests are received
             and responses are returned. Documentation at :
             Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
             Java AJP  Connector: /docs/config/ajp.html
             APR (HTTP/AJP) Connector: /docs/apr.html
             Define a non-SSL HTTP/1.1 Connector on port 8080
        -->
    protocol
    HTTP/1.0
    HTTP/1.1
    org.apache.coyote.http11.Http11Protocol     - blocking Java connector
    org.apache.coyote.http11.Http11NioProtocol  - non blocking Java connector
    org.apache.coyote.http11.Http11AprProtocol  - the APR/native connector

    03、运行模式的判别

    判定运行方式
    Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:
    Starting ProtocolHandler ["http-bio-8080"]
    Starting ProtocolHandler ["http-nio-8080"]
    Starting ProtocolHandler ["http-apr-8080"]

    04、安装apr支持库

    install:
    APR library
    JNI wrappers for APR used by Tomcat (libtcnative)
    OpenSSL libraries

    Requirements:
    APR 1.2+ development headers (libapr1-dev package)
    OpenSSL 0.9.7+ development headers (libssl-dev package)
    JNI headers from Java compatible JDK 1.4+
    GNU development environment (gcc, make)

    http://apr.apache.org/download.cgi                                                 #APR

    http://archive.apache.org/dist/tomcat/tomcat-connectors/native     #native

    1、tomcat7.X演示        

    http://tomcat.apache.org/tomcat-7.0-doc/apr.html

    2、编译环境准备工作

    yum install -y gcc gcc-c++ make openssl-devel 

    3、编译安装apr
    yum    install  -y    apr             #有的tomcat编译native需要高版本的apr+1.4.3,太低不行,就需要源码编译
    ./configure --prefix=/usr/local/apr
    make && make install

    tomcat-7.0.70/bin/
    tomcat-native.tar.gz     --源码

    编译

    ./configure --with-apr=/usr/local/apr/     --with-java-home=/servyou_domain/jdk1.7.0_79/   --disable-openssl-version-check  --with-ssl=yes
    make && make install 

     注意:如果系统设置了jdk环境变量,就不需要制定JAVA_HOME,不对openssl版本限制,不需要加对openssl版本检查

    05、apr的环境变量配置

    1、配置到系统变量中

    vi /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

    2、配置APR本地库到系统共享库搜索路径中

    拷贝/usr/local/apr/lib目录下所有动态库到/usr/lib或/lib系统共享库搜索目录下即可。
    copy /usr/local/apr/lib/libtcnative* /usr/lib/

    3、配置到catalina.sh脚本中

    编辑$TOMCAT_HOME/bin/catalina.sh文件,在虚拟机启动参数JAVA_OPTS中添加java.library.path参数,指定apr库的路径

    JAVA_OPTS="$JAVA_OPTS  -Djava.library.path=/usr/local/apr/lib"

    关闭ssl,将SSLEngine的值从on改成off即可:

    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
    Tomcat 6.x版本从6.0.32开始就默认支持apr
    Tomcat 7.x版本从7.0.30开始就默认支持apr

    06、tomcat配置修改

    1、server.xml
    <Connector port="8080"

    protocol="org.apache.coyote.http11.Http11AprProtocol"
    maxThreads="1000"

    maxHttpHeaderSize="8192"

    acceptCount="1000"

    disableUploadTimeout="true"

    connectionTimeout="20000"

    redirectPort="8230" />

     tomcat7.x-Connector参数

    http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

    http://tomcat.apache.org/tomcat-8.0-doc/config/http.html

    tomcat--Connector参数解读
    <Connector
    port="80" //监听端口
    protocol="HTTP/1.1" //协议
    enableLookups="false" //禁止反向DNS查询客户端主机名
    maxThreads="600" //最大线程数
    minSpareThreads="100" //初始化创建的线程数
    maxSpareThreads="500" //一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。在7.8取消了
    acceptCount="700" //最大等待数
    connectionTimeout="20000" //连接超时
    redirectPort="8443" //重定向
    />

    2、catalina.sh

    export JAVA_HOME="/servyou_domain/jdk1.7.0_79"
    export JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms2g -Xmx2g -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -Djava.library.path=/usr/local/apr/lib"

    下面的也是可以

    CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib"

     

  • 相关阅读:
    数论:扩展欧几里得算法
    数论:四大定理
    数论:完全数
    数论:求解不定方程和同余方程的实验范例
    Python记:列表和元组之序列相加
    动态规划入门:热血实战!
    Python记通用列表操作之切片!
    Python记:索引操作示例:将以数指定年,月,日的日期打印出来
    计算机的性能指标
    动态规划入门(2):01背包问题实践
  • 原文地址:https://www.cnblogs.com/xiaochina/p/7519465.html
Copyright © 2020-2023  润新知