移动网站开发认证,帮您做网站,网站透明导航代码,seo网络推广是什么意思转载自 Tomcat 使用apr优化最近业务服务器出现了一些问题#xff0c;Nginx傲娇了#xff0c;准备把加Nginx插件上的一些处理逻辑扔到后端的Tomcat的业务处理里面去#xff0c;考虑到tomcat目前本来就压力山大#xff0c;所以弄了弄apr库来优化tomcat的并发能力。#xf…转载自 Tomcat 使用apr优化最近业务服务器出现了一些问题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个包 aprapr-iconvapr, 或者这里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文件在最后追加如下内容
net.core.netdev_max_backlog 32768
net.core.somaxconn 32768
net.core.wmem_default 8388608
net.core.rmem_default 8388608
net.core.rmem_max 16777216
net.core.wmem_max 16777216
net.ipv4.ip_local_port_range 1024 65000
net.ipv4.route.gc_timeout 100
net.ipv4.tcp_fin_timeout 30
net.ipv4.tcp_keepalive_time 1200
net.ipv4.tcp_timestamps 0
net.ipv4.tcp_synack_retries 2
net.ipv4.tcp_syn_retries 2
net.ipv4.tcp_tw_recycle 1
net.ipv4.tcp_tw_reuse 1
net.ipv4.tcp_mem 94500000 915000000 927000000
net.ipv4.tcp_max_orphans 3276800
net.ipv4.tcp_max_syn_backlog 65536
保存退出执行sysctl -p生效