Tomcat 使用apr优化

转载 2015年11月19日 15:40:10

转自:http://blog.itpub.net/29510932/viewspace-1102187/


最近业务服务器出现了一些问题,Nginx傲娇了,准备把加Nginx插件上的一些处理逻辑扔到后端的Tomcat的业务处理里面去,考虑到tomcat目前本来就压力山大,所以弄了弄apr库来优化tomcat的并发能力。(虽然不是很懂具体原理,不过并发能力确实得到了提高~\(≧▽≦)/~)
      tomcat默认采用的BIO模型,在几百并发下性能会有很严重的下降。tomcat自带还有NIO的模型,另外也可以调用APR的库来实现操作系统级别控制。

NIO模型是内置的,调用很方便,只需要将上面配置文件中protocol修改成org.apache.coyote.http11.Http11NioProtocol,重启即可生效。上面配置我已经改过了,默认的是HTTP/1.1。

APR则需要安装第三方库,在高并发下会让性能有明显提升。如使用默认protocal就是apr,但最好把protocol修改成org.apache.coyote.http11.Http11AprProtocol,会更加明确。

在官方找到一个表格详细说明了这三种方式的区别:

Java Blocking Connector   Java Nio Blocking Connector   APR/native Connector 
                                                      BIO                              NIO                                 APR 
        Classname                            AjpProtocol               AjpNioProtocol                   AjpAprProtocol 
        Tomcat Version                    3.x onwards                 7.x onwards                    5.5.x onwards 
        Support Polling                          NO                             YES                                 YES 
        Polling Size                                N/A                   maxConnections                 maxConnections 
        Read Request Headers              Blocking                  Sim Blocking                         Blocking 
        Read Request Body                 Blocking                   Sim Blocking                          Blocking 
        Write Response                        Blocking                  Sim Blocking                         Blocking 
        Wait for next Request               Blocking                  Non Blocking                     Non Blocking 
        Max Connections               maxConnections            maxConnections                maxConnections 




   安装步骤:
   下载包 
    到http://apr.apache.org/下载下面3个包 
    apr,apr-iconv,apr,
    或者这里apr-1.5.0.tar.gz.rarapr-iconv-1.2.1.tar.gz.rarapr-util-1.5.3.tar.gz.rar
    因为上传文件类型的限制,去掉后面的.rar就ok了

    开始安装~
    1)安装apr 
    tar zxvf apr-1.4.2.tar 
    cd apr-1.4.2 
    ./configure --prefix=/usr/local/apr 
    make 
    make install 

    2)安装apr-iconv 
    tar -zxvf apr-iconv-1.2.1.tar.gz 
    cd apr-iconv-1.2.1 
    ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr 
    make 
    make install 

    3)安装apr-util 
    tar zxvf apr-util-1.3.10.tar.gz 
    cd apr-util-1.3.10 
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv 
    make 
    make install 

    4)安装tomcat-native 
    tar zxvf tomcat-native-1.1.20-src.tar.gz 
    cd tomcat-native-1.1.20-src/jni/native   
    ./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.6.0_23 
    make 
    make install 

    5)添加环境变量 
    vi /etc/profile #在他文件末尾处添加下面的变量 
    # apr 
    export LD_LIBRARY_PATH=/usr/local/apr/lib 
    执行 
    source /etc/profile 
    此时环境变量生效果

    6)修改server.xml
    配置文件中protocol修改成org.apache.coyote.http11.Http11AprProtocol

    重启Tomcat,看到
    Aug 29, 2010 3:47:32 PM org.apache.catalina.core.AprLifecycleListener init 
    INFO: Loaded APR based Apache Tomcat Native library 1.1.20. 
    即可,在最后的端口信息方面也可以看到http-apr-8080

    PS:可能会出现SSL的错误,这个是加密连接的配置,如果tomcat处理的业务没有使用SSL(利用Https来连接)的话,设置
    

    效果:
    对于这几种模式,我用ab命令模拟1000并发测试10000次,测试结果比较意外,为了确认结果,我每种方式反复测试了10多次,并且在两个服务器上都测试了一遍。结果发现Bio和Nio性能差别不大。但是采用apr,连接建立的速度会有50%~100%的提升。
    业务上的话,tomcat的数量减少了40%

    再PS:由于我们采用了linux服务器,所以优化内核参数也是一个非常重要的工作。给一个参考的优化参数:

    修改/etc/sysctl.cnf文件,在最后追加如下内容:



  1. net.core.netdev_max_backlog = 32768 
  2. net.core.somaxconn = 32768 
  3. net.core.wmem_default = 8388608 
  4. net.core.rmem_default = 8388608 
  5. net.core.rmem_max = 16777216 
  6. net.core.wmem_max = 16777216 
  7. net.ipv4.ip_local_port_range = 1024 65000 
  8. net.ipv4.route.gc_timeout = 100 
  9. net.ipv4.tcp_fin_timeout = 30 
  10. net.ipv4.tcp_keepalive_time = 1200 
  11. net.ipv4.tcp_timestamps = 0 
  12. net.ipv4.tcp_synack_retries = 2 
  13. net.ipv4.tcp_syn_retries = 2 
  14. net.ipv4.tcp_tw_recycle = 1 
  15. net.ipv4.tcp_tw_reuse = 1 
  16. net.ipv4.tcp_mem = 94500000 915000000 927000000 
  17. net.ipv4.tcp_max_orphans = 3276800 
  18. net.ipv4.tcp_max_syn_backlog = 65536 



    保存退出,执行sysctl -p生效


开启Tomcat APR运行模式,优化并发性能

原文链接:http://blog.csdn.net/xyang81/article/details/51502766Tomcat支持三种接收请求的处理方式:BIO、NIO、APR 1>、BIO模式:...
  • xyang81
  • xyang81
  • 2016年05月25日 23:39
  • 29708

Linux系统Tomcat优化开启apr模式

Linux系统Tomcat优化开启apr模式 Tomcat支持三种接收请求的处理方式:BIO、NIO、APR其中APR性能最为强大,下面来讲解一下linux系统下tomcat开启apr模式可能...
  • baidu_23415729
  • baidu_23415729
  • 2017年01月06日 10:02
  • 793

【Tomcat】-- tomcat生产环境性能参数优化和APR优化

tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈。   tomcat内存优化 linux修改TOMCAT_HOME/bin/catal...
  • u012386696
  • u012386696
  • 2017年02月09日 11:46
  • 791

Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化

Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下: 这三种模式的不同之处如下: BIO: 一个线程处理一个请求。缺点:并发量高时,线...
  • ClementAD
  • ClementAD
  • 2015年07月24日 19:34
  • 7437

Tomcat 性能优化之APR插件安装

Tomcat优化之APR安装
  • lenvon2012
  • lenvon2012
  • 2015年06月12日 14:25
  • 983

Tomcat开启APR运行模式,优化并发性能

原文在这里:http://blog.csdn.net/xyang81/article/details/51502766 Tomcat支持三种接收请求的处理方式:BIO、NIO、APR  1...
  • goldenfish1919
  • goldenfish1919
  • 2017年12月21日 09:09
  • 78

tomcat使用APR提高性能

转:http://nll.im/post/tomcat-apr.html tomcat使用APR提高性能∞ 07-23, 2014 操作系统:Centos6.3 Tom...
  • lcathm
  • lcathm
  • 2015年05月19日 20:36
  • 1834

Tomcat中如何配置使用APR

APR(Apache Portable Runtime),即Apache可移植运行库,正如官网所言,APR的使命是创建和维护一套软件库,以便在不同操作系统(Windows、Linux等)底层实现的基础...
  • elinespace
  • elinespace
  • 2016年11月03日 08:41
  • 3640

Tomcat 使用apr优化

最近业务服务器出现了一些问题,Nginx傲娇了,准备把加Nginx插件上的一些处理逻辑扔到后端的Tomcat的业务处理里面去,考虑到tomcat目前本来就压力山大,所以弄了弄apr库来优化tomcat...
  • xqzfd
  • xqzfd
  • 2015年09月08日 20:14
  • 110

tomcat高并发apr io模型

linux上配置tomcat apr高并发io模型 前情;本人的开发环境:centos7,tomcat8.0.44,jdk1.7.0_79 安装apr遇到问题: tomcat8.044 需要op...
  • bruce1225
  • bruce1225
  • 2017年06月15日 18:04
  • 546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Tomcat 使用apr优化
举报原因:
原因补充:

(最多只允许输入30个字)