tomcatのパフォーマンスアップ
Apache Tomcatのコネクター部分(クライアントからの接続を待ち受けるところ)はAPR(5.5、6.0)やNIO(6.0)でパフォーマンスがあがるらしい。ぜひやってみよう。今使っているTomcat君は5.5.27であるのでAPRを使ってみる。Vine Linux 4.2で。
Vine Linux 4.2にはapr-devel 1.2.7が用意されているのでaptでもらってくる。openssl-develなんてデフォで入っている想定。
今回、CATALINA_HOMEは/usr/local/tomcat、JAVA_HOMEは/usr/local/javaである。Tomcat 5.5.27のバイナリについてくるtomcat-nativeは1.1.12という事で、検索するとconfigureがうまくいかない可能性があるらしい。autoconfを一回実行すれば大丈夫という情報があったのでやってみた。
# cd /tmp # tar xzf /usr/local/tomcat/bin/tomcat-native.tar.gz # cd tomcat-native-1.1.12-src/jni/native # autoconf # ./configure --prefix=/usr/local/tomcat --with-apr=/usr/bin --with-ssl=/usr/lib --with-java-home=/usr/local/java # make # make install
正直、–with-aprと–with-sslはこういう指定で良いのか分からん。一応動いているのでよしとする。–with-ssl=/usrだとビルドはできるが組み込んで実行するとjava.lang.UnsatisfiedLinkError: undefined symbol: SSL_callback_tmp_DHなどと言われた。
さて、上記の方法で/usr/local/tomcat/libの中にlibtcnative-1.so.0.1.12などというファイルができあがる。後はTomcatがこいつを見つけられるようにLD_LIBRARY_PATHに入れるかldconfig的な事を行う。今回はLD_LIBRARY_PATHに追加してからTomcatを起動するようにする。後、うちはTomcatはjsvc化しているためcatalina.shだと違うかも。
ついでに、今うちで使っている/etc/init.d/tomcat。ネットからもらってきて少しカスタマイズした
#!/bin/sh # # tomcat Startup script for the Apache Tomcat Server # # chkconfig: 2345 80 20 # description: The Apache Tomcat Server.
. /etc/rc.d/init.d/functions
prog=Tomcat JAVA_HOME=/usr/local/java CATALINA_HOME=/usr/local/tomcat TOMCAT_USER=tomcat CATALINA_BASE=$CATALINA_HOME JSVC=/usr/local/bin/jsvc # for multi instances adapt those lines. TMP_DIR=/var/tmp PID_FILE=/var/run/tomcat.pid CLASSPATH=$JAVA_HOME/lib/tools.jar: $CATALINA_HOME/bin/commons-daemon.jar: $CATALINA_HOME/bin/bootstrap.jar BOOTCLASS=org.apache.catalina.startup.Bootstrap LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib export LD_LIBRARY_PATH CATALINA_OPTS=-Xmx128m" function start() { action "Starting $prog: " $JSVC -user $TOMCAT_USER -home $JAVA_HOME -jvm server -Dcatalina.home=$CATALINA_HOME -Dcatalina.base=$CATALINA_BASE -Djava.io.tmpdir=$TMP_DIR -wait 30 -pidfile $PID_FILE -outfile $CATALINA_HOME/logs/tomcat.log -errfile $CATALINA_HOME/logs/tomcat.err $CATALINA_OPTS -cp $CLASSPATH $BOOTCLASS # # To get a verbose JVM #-verbose # To get a debug of jsvc. #-debug } function stop() { action "Stopping $prog: " $JSVC -stop -pidfile $PID_FILE $BOOTCLASS } case "$1" in start) # # Start Tomcat # start exit $? ;; stop) # # Stop Tomcat # stop exit $? ;; restart) # # Restart Tomcat # stop start exit $? ;; *) echo "Usage $prog start/stop/restart" exit 1;; esac