tomcat 性能优化之APR(Apache Portable Runtime)

来源:互联网 发布:开源图像识别算法 编辑:程序博客网 时间:2024/05/16 18:29

apr 与 tomcat-native 提供更好的伸缩性、性能和集成到本地服务器技术。

如果没有apr技术,启动tomcat 时出现如下提示:

信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.6.0_06/jre/lib/i386/client:/usr/java/jdk1.6.0_06/jre/lib/i386:/usr/java/jdk1.6.0_06/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib

按照官方说明需要:

  • APR library
  • OpenSSL libraries

openssl 可以用 yum install openssl-devel,apr还是下载*.gz来安装。
apr-1.3.2.tar.gz
apr-util-1.3.2.tar.gz
两个可以在 http://apache.mirror.phpchina.com/apr/ 找到。
tomcat-native.tar.gz 可以在tomcat/bin目录下找到。

安装 apr

  1. wget http://apache.mirror.phpchina.com/apr/apr-1.3.2.tar.gz  
  2. tar zxvf apr-1.3.2.tar.gz  
  3. cd apr-1.3.2  
  4. ./configure  
  5. make  
  6. make install  

apr 默认安装在 /usr/local/apr

安装 apr-util

  1. wget http://apache.mirror.phpchina.com/apr/apr-util-1.3.2.tar.gz  
  2. tar zxvf apr-util-1.3.2.tar.gz  
  3. cd apr-util-1.3.2  
  4. ./configure --with-apr=/usr/local/apr  
  5. make  
  6. make install  

安装 tomcat-native

  1. cd /usr/local/tomcat-6.0.18/bin  
  2. tar zxvf tomcat-native.tar.gz  
  3. cd tomcat-native-1.1.14-src/jni/native  
  4. ./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.6.0_11  
  5. make  
  6. make install  

设置 apr 的环境变量:

  1. vi /etc/profile  
  2. # 后面添加以下内容  
  3. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib  
  4. # 使profile生效,  
  5. source /etc/profile  

启动 tomcat 后, 看日志:

  1. bin/startup.sh  
  2. head logs/catalina.out  

可以看到以下结果:

信息: Loaded APR based Apache Tomcat Native library 1.1.14.2009-1-13 11:12:51 org.apache.catalina.core.AprLifecycleListener init信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

好了, 可以运行了


         闲说几句,要测APR给tomcat带来的好处最好的方法是在慢速网络上(模拟Internet),将Tomcat线程数开到300以上的水平,然后模拟一大堆并发请求。如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来。

        你在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用apr是非常必要的

参考:http://blog.chenlb.com/2009/01/install-apache-portable-runtime-or-tomcat-native-on-tomcat.html

           http://www.iteye.com/topic/19890

0 0