native优化tomcat
时间:2010-06-11 来源:qingheliu
Keep in mind, however, that Apache httpd may not be more efficient at serving your content than Tomcat standalone is. Tomcat’s web server is highly optimized, and today’s Java runtimes are very good at natively compiling Tomcat so that the resulting binary it is running is also highly optimizedfor your operating system andarchitecture.Configuring Tomcat so that all of its requests must first travel through Apache httpd may actually slow down Tomcat’s response times, and it is usually the performance of the dynamic content that web server administrators need to improve.
1:下载native, 它编译时需要apr、openssl、jdk
如下:
Build tc-native requires three components to be installed:
APR library
OpenSSL libraries
Java SE Development Kit (JDK)
2:我下定apr为apr-1.3.8.tar.bz2
安装如下:
[root@localhost apr-1.3.8]# ./configure --prefix=/opt/apr
[root@localhost apr-1.3.8]# make && make install
3:openssl一般系统默认都已经安装,自己就不需要安装了。
是否已经安装可以用下面的命令来取证:
[root@localhost bin]# which openssl #测试是否安装了openssl
/usr/bin/openssl
4:安装jdk, 一般下载二进制版本,直接运行即可。我把jdk安装在/usr/local/jdk目录下,并进行java路径配置。
我的配置如下:
[root@localhost logs]# cd
[root@localhost ~]# cat .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
#红色字体为添加部分
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CATALINA_HOME=/opt/tomcat5.5 ##我打算把tomat安装在/opt目录下
5:安装tomcat, 我下载的为apache-tomcat-5.5.26.tar.gz
直接:
[root@localhost software]#tar zxvf apache-tomcat-5.5.26.tar.gz -C /opt
[root@localhost software]#cd /opt
[root@localhost software]#ln -s apache-tomcat-5.5.26 tomcat5.5
6:安装native, 我下载的为tomcat-native-1.1.20-src.tar.gz
安装方法如下:
[root@localhost software]# tar zxvf tomcat-native-1.1.20-src.tar.gz
[root@localhost native]# ./configure --with-apr=/opt/apr/bin/apr-1-config --with-java-home=/usr/local/jdk --with-ssl=yes --prefix=/opt/tomcat5.5/
[root@localhost native]# make
[root@localhost native]# make install
make[1]: Entering directory `/home/software/tomcat-native-1.1.20-src/jni/native'
make[1]: Nothing to be done for `local-all'.
make[1]: Leaving directory `/home/software/tomcat-native-1.1.20-src/jni/native'
/opt/apr/build-1/mkdir.sh /opt/tomcat5.5//include/apr-1 /opt/tomcat5.5//lib/pkgconfig \
/opt/tomcat5.5//lib /opt/tomcat5.5//bin
mkdir /opt/tomcat5.5/include
mkdir /opt/tomcat5.5/include/apr-1
mkdir /opt/tomcat5.5/lib
mkdir /opt/tomcat5.5/lib/pkgconfig
/usr/bin/install -c -m 644 tcnative.pc /opt/tomcat5.5//lib/pkgconfig/tcnative-1.pc
list=''; for i in $list; do \
( cd $i ; make DESTDIR= install ); \
done
/bin/sh /opt/apr/build-1/libtool --mode=install /usr/bin/install -c -m 755 libtcnative-1.la /opt/tomcat5.5//lib
/usr/bin/install -c -m 755 .libs/libtcnative-1.so.0.1.20 /opt/tomcat5.5//lib/libtcnative-1.so.0.1.20
(cd /opt/tomcat5.5//lib && { ln -s -f libtcnative-1.so.0.1.20 libtcnative-1.so.0 || { rm -f libtcnative-1.so.0 && ln -s libtcnative-1.so.0.1.20 libtcnative-1.so.0; }; })
(cd /opt/tomcat5.5//lib && { ln -s -f libtcnative-1.so.0.1.20 libtcnative-1.so || { rm -f libtcnative-1.so && ln -s libtcnative-1.so.0.1.20 libtcnative-1.so; }; })
/usr/bin/install -c -m 755 .libs/libtcnative-1.lai /opt/tomcat5.5//lib/libtcnative-1.la
/usr/bin/install -c -m 755 .libs/libtcnative-1.a /opt/tomcat5.5//lib/libtcnative-1.a
chmod 644 /opt/tomcat5.5//lib/libtcnative-1.a
ranlib /opt/tomcat5.5//lib/libtcnative-1.a
PATH="$PATH:/sbin" ldconfig -n /opt/tomcat5.5//lib
----------------------------------------------------------------------
Libraries have been installed in: ##通过此信息显然native安装成功
/opt/tomcat5.5//lib
显然去/opt/tomcat5.5目录下 ,你会发现多了一个lib目录
7:仅仅这样还是不行,还需要如下配置:
文档:
Edit $CATALINA_HOME/bin/setenv.sh (creating the file if necessary) and add the path to the tc-native libraries to LD_LIBRARY_PATH. Something like:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH
/opt/apache-tomcat-5.5.26/bin
[root@localhost bin]# cat setenv.sh ##文件内容
LD_LIBRARY_PATH=:/opt/tomcat5.5/lib
export LD_LIBRARY_PATH
8:测试native是否已经生效,如果不进行配置,甚至不安装native,则监控catalina.out时会有如下的输出: [root@localhost logs]# cat catalina.out
Jun 11, 2010 10:32:44 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/jdk1.5.0_19/jre/lib/i386/client:/usr/local/jdk1.5.0_19/jre/lib/i386:/usr/local/jdk1.5.0_19/jre/../lib/i386
Jun 11, 2010 10:32:44 AM org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Jun 11, 2010 10:32:44 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1994 ms
Jun 11, 2010 10:32:45 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Jun 11, 2010 10:32:45 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.26
Jun 11, 2010 10:32:45 AM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
Jun 11, 2010 10:32:47 AM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Jun 11, 2010 10:32:48 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Jun 11, 2010 10:32:48 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/36 config=null
Jun 11, 2010 10:32:48 AM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
Jun 11, 2010 10:32:48 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3366 ms
安装配置成功后,再次监控日志信息(tail -f catalina.out)查看或先将原来的文件内容清空,然后启动tomat,待启动完成后查看文件内容: [root@localhost logs]# cat catalina.out
Jun 11, 2010 10:39:15 AM org.apache.coyote.http11.Http11BaseProtocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
Jun 11, 2010 10:39:16 AM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Jun 11, 2010 10:39:16 AM org.apache.coyote.http11.Http11BaseProtocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
Jun 11, 2010 10:39:16 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: Failed shutdown of Apache Portable Runtime
Jun 11, 2010 10:39:35 AM org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Jun 11, 2010 10:39:35 AM org.apache.coyote.ajp.AjpAprProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8009
Jun 11, 2010 10:39:35 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1091 ms
Jun 11, 2010 10:39:35 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Jun 11, 2010 10:39:35 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.26
Jun 11, 2010 10:39:35 AM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
Jun 11, 2010 10:39:37 AM org.apache.coyote.http11.Http11AprProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Jun 11, 2010 10:39:37 AM org.apache.coyote.ajp.AjpAprProtocol start
INFO: Starting Coyote AJP/1.3 on ajp-8009
Jun 11, 2010 10:39:37 AM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
Jun 11, 2010 10:39:37 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1822 ms 发现已经没有了上面日志中红色字体部分 显然native已经生效