Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式

tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态。 

1)bio 

默认的模式,性能非常低下,没有经过任何优化处理和支持. 

2)nio 

利用java的异步io护理技术,no blocking IO技术. 

想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为 

<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" 
	connectionTimeout="20000" 
	URIEncoding="UTF-8" 
	useBodyEncodingForURI="true" 
	enableLookups="false" 
	redirectPort="8443" /> 

启动后,就可以生效。

3)apr 

安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能. 

必须要安装apr和native,直接启动就支持apr。下面的修改纯属多余,仅供大家扩充知识,但仍然需要安装apr和native 

如nio修改模式,修改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来连接)的话,设置
    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />

    效果:
    对于这几种模式,我用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生效


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值