tomcat优化,配置APR,启用本地库接口
今天启动tomcat无意中发现Tomcat?Native?library?which?allows?optimal?performance?in?production?environments?was?not?found? on?the?java.library后来经过拜google大师,发现tomcat5.5.10以上版本支持一种叫apr的东西,支持通过apr进行JNI(java 本地接口)调用,使用本地代码来加速网络处理。在这里与各位分享一下。???APR(Apache portable Run-time libraries,Apache可移植运行库,是Apache的一个独立项目)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。先看下配置APR的优点?如果不使用apr之前,Tomcat的Servlet线程池使用的是阻塞IO的模式,使用apr之后,线程池变成了NIO的非阻塞模式,而且这种NIO还是使用了操作系统的本地代码,看tomcat文档上面的说法是,极大提升web处理能力,不再需要专门放一个web?server处理静态页面了。?不用apr之前,你配置多少个等待线程,tomcat就会启动多少个线程挂起等待,使用apr以后,不管你配置多少,就只有几个NIO调度的线程,这一点你可以通过kill?-3?PID,然后察看log得知。?假设不使用apr,可能端口的线程调度能力比较差,所以通过iptables进行端口转发,让两个端口去分担一个端口的线程调度,就有可能减少线程调度的并发,从而提高处理能力,减少资源消耗。?? ?下面去看下如何配置APR:?如果没有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技术,可以看到以下结果:信息:?Loaded?APR?based?Apache?Tomcat?Native?library?1.1.14.2011-2-26?19:57:51?org.apache.catalina.core.AprLifecycleListener?init信息:?APR?capabilities:?IPv6?[true],?sendfile?[true],?accept?filters?[false],?random?[true].?按照官方说明需要一下库:APR?libraryOpenSSL?librariesopenssl?可以用?yum?install?openssl-devel,apr还是下载*.gz来安装。?(1)安装APR下载地址 :http://apr.apache.org #apr-1.3.8.tar.gz#tar?zxvf?apr-1.3.8.tar.gz#cd?apr-1.3.8#./configure#make#make?install下载地址 :http://apr.apache.org 安装在/usr/local/apr#apr-util-1.3.9.tar.gz#tar?zxvf?apr-util-1.3.9.tar.gz#cd?apr-util-1.3.9??#./configure?--with-apr=/usr/local/apr??#make?#make?install?安装在/usr/local/apr/lib?tomcat-native在解压后的tomcat/bin目录中可以找到安装?tomcat-native#cd?/usr/local/tomcat5.5/bin??#tar?zxvf?tomcat-native.tar.gz??#cd?tomcat-native-1.1.3/jni/native??#./configure?--with-apr=/usr/local/apr#make?#make?install??(2)设置?Tomcat?整合?APR有两种方法:(1)修改?tomcat?的启动?shell?(?catalina.sh?),在该文件中加入启动参数:?CATALINA_OPTS="$CATALINA_OPTS?-Djava.library.path=/usr/local/apr/lib"?。(2)也可以在环境变量中配置/etc/profile中加入?export?CATALINA_OPTS="$CATALINA_OPTS?-Djava.library.path=/usr/local/apr/lib"(3)判断安装成功:如果看到下面的启动日志,表示成功。org.apache.coyote.http11.Http11AprProtocol?init