当前位置:首页 > Apache
Linux 系统下 Tomcat 的服务配置和性能优化
来源:靑龍一笑的博客  作者:靑龍一笑  发布时间:2016-04-07 20:09:35  点击量:938  评论:0

    近来发现很多 linux 系统管理员对 tomcat 系统服务的配置不是很规范,其实,Tomcat 自带了一个守护进程管理工具 jsvc,可以用它来配置 Tomcat 的系统服务。
    为了演示的需要,我准备了 jdk 和 tomcat:

[root@RicenOS opt]# pwd
/opt
[root@RicenOS opt]# ls
java    tomcat

    进入到 tomcat 的 bin 目录,解压 commons-daemon-native.tar.gz:

[root@RicenOS opt]# cd tomcat/bin/
[root@RicenOS bin]# tar xvf commons-daemon-native.tar.gz

    进入到解压后的 unix 子目录,配置并编译:

[root@RicenOS bin]# cd commons-daemon-1.0.15-native-src/unix/
[root@RicenOS unix]# ./configure --with-java=/opt/java && make

    把编译生成的 jsvc 文件拷贝到 tomcat 的 bin 目录下:

[root@RicenOS unix]# cp jsvc ../../

    编写服务脚本,把这个脚本放到 /etc/rc.d/init.d 目录下:

[root@RicenOS unix]# vi /etc/rc.d/init.d/tomcat

    内容参考如下:

#!/bin/sh
# chkconfig: 35 46 49
# description: Apache tomcat6
DESC="Apache tomcat6"
JAVA_HOME="/opt/java"
CATALINA_HOME="/opt/tomcat"
JAVA_OPTS="-server -XX:PermSize=128M -XX:MaxPermSize=512M -Xms1024M -Xmx1024M -XX:+HeapDumpOnOutOfMemoryError"
SERVICE_START_WAIT_TIME=10
CATALINA_PID="$CATALINA_HOME/logs/catalina.pid"
CATALINA_OUT="$CATALINA_HOME/logs/catalina.out"
CLASSPATH="$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/tomcat-juli.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar"
LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_HOME/conf/logging.properties"
LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
CATALINA_TMPDIR="$CATALINA_HOME/temp"
JSVC="$CATALINA_HOME/bin/jsvc"
CATALINA_MAIN=org.apache.catalina.startup.Bootstrap
RETVAL=0
echo_success() {
    echo -en "\\033[60G\033[32m"
    echo -n "[ "
    echo -n $"OK"
    echo -n " ]"
    echo -ne "\033[0m\n"
    RETVAL=0
}
echo_failure() {
    echo -en "\\033[60G\033[31m"
    echo -n "[ "
    echo -n $"FAILED"
    echo -n " ]"
    echo -ne "\033[0m\n"
    RETVAL=1
}
start(){
    echo -n "Starting $DESC ..."
    "$JSVC" \
    -java-home "$JAVA_HOME" \
    -pidfile "$CATALINA_PID" \
    -wait "$SERVICE_START_WAIT_TIME" \
    -outfile "$CATALINA_OUT" \
    -errfile "&1" \
    -classpath "$CLASSPATH" \
    "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS \
    -Dcatalina.home="$CATALINA_HOME" \
    -Dcatalina.base="$CATALINA_HOME" \
    -Djava.io.tmpdir="$CATALINA_TMPDIR" \
    -Duser.timezone=GMT+08 \
    $CATALINA_MAIN
    sleep 3
    RETVAL=$?
    if [ "$RETVAL" -eq 0 ]; then
        echo_success
    else
        echo_failure
    fi
    return $RETVAL
}
stop(){
    echo -n "Stopping $DESC ..."
    "$JSVC" \
    -stop \
    -pidfile "$CATALINA_PID" \
    -classpath "$CLASSPATH" \
    -Dcatalina.home="$CATALINA_HOME" \
    -Dcatalina.base="$CATALINA_HOME" \
    -Djava.io.tmpdir="$CATALINA_TMPDIR" \
    $CATALINA_MAIN
    RETVAL=$?
    if [ "$RETVAL" -eq 0 ]; then
        echo_success
    else
        echo_failure
    fi
    return $RETVAL
}
repair(){
    PIDLIST=`ps -ef | grep "$CATALINA_HOME" | grep -v "grep" | awk '{print $2}'`
    if [ -n "$PIDLIST" ]; then
        for PID in $PIDLIST
        do
            kill -9 $PID
            echo "Kill $DESC PID:$PID"
        done
        echo -n "$DESC repair success."
        echo_success
    else
        echo "No $DESC PID alive."
    fi
}
status(){
    PIDLIST=`ps -ef | grep "$CATALINA_HOME" | grep -v "grep" | awk '{print $2}'`
    if [ -n "$PIDLIST" ]; then
        echo "$DESC is running."
    else
        echo "$DESC is not running."
    fi
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    repair)
        repair
        ;;
    status)
        status
        RETVAL=0
        ;;
    *)
        echo "Usage: $0 {start | stop | repair | status}"
        RETVAL=1
        ;;
esac
exit $RETVAL

    改变文件权限:

[root@RicenOS unix]# chmod +x /etc/rc.d/init.d/tomcat

    配置系统启动:

[root@RicenOS unix]# chkconfig --level 35 tomcat on

    修改 tomcat/conf 目录下的 server.xml 文件:

[root@RicenOS unix]# vi ../../../conf/server.xml

    主要修改以下这段:

<Connector port="8080" protocol="HTTP/1.1" maxHttpHeaderSize="8192"
    maxThreads="1000" minSpareThreads="100" maxSpareThreads="5000"
    minProcessors="50" maxProcessors="500" enableLookups="false"
    redirectPort="8443" acceptCount="1000" connectionTimeout="40000"
    disableUploadTimeout="true" URIEncoding="utf-8" />
版权所有 © 2005-2023 靑龍一笑的博客  Powered by C.S.Ricen
Copyright © 2005-2023 by www.ricensoftwares.com.cn  All Rights Reserved.

欢迎光临本站,这里是靑龍一笑的博客。

因资金匮乏,本站已迁到国外的免费空间,可能导致本站的访问速度较慢,由此给您带来的不便,敬请谅解。

您可以通过下方的“支持本站建设”链接,给本站提供资金支持。

Free Web Hosting