分类
Java 容器 笔记

系统部署与优化之Tomcat

tomcat是一个优秀的web容器,它出自apache,开源免费。对于使用java技术的中小企业来说,用得最多的应该就是它了。以下是自己布署时最基本的配置。

1.使用多实例
多实例是指,所有系统共用一个tomcat程序,而配置文件分开。这样的好处是便于管理,而且也可以共享私有的lib库。升级tomcat或lib库只需一次操作,不易出错。
使用多实例很简单,把tomcat复制出来,重命名如:instance,可以看到如下目前。删除除了conf目录中其他目录中的所有文件。在bin目录中写自己的启动脚本。

如果是linux系统,在bin目录下新建tomcat.sh文件,内容如下:

export CATALINA_HOME="tomcat目录"
export CATALINA_BASE="实例目录instance"
case "$1" in
start)
    if [ -f $CATALINA_HOME/bin/startup.sh ];then
        echo "start tomcat ..."
        $CATALINA_HOME/bin/startup.sh
    fi;;
stop)
    if [ -f $CATALINA_HOME/bin/startup.sh ];then
        echo "stop tomcat ..."
        $CATALINA_HOME/bin/shutdown.sh
    fi;;
*)
    echo $"Usage: $0 {start|stop}"
    exit 1;;
esac

给tomcat.sh赋与启动权限就可以了。
启动:tomcat.sh start
停止:tomcat.sh stop
如果是windows系统,在bin目录下新建tomcat.bat文件,内容如下:

@echo off
set CATALINA_HOME="tomcat目录"
set CATALINA_BASE="实例目录instance"
%CATALINA_HOME%\bin\startup.bat

双击tomcat.bat即可启动。
需要注意的是,多实例启动时,每个实例的端口不能一样。可以修改conf/server.xml配置文件,一共有四个端口:8005、8009、8080、8443。

2.修改tomcat连接数
修改tomcat的连接数可以增加并发,提高处理能力。
打开conf/server.xml,找到提供服务的端口:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

修改为:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxThreads="500"
               acceptCount="1000"/>

maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
但是连接数不是越大越好。根据服务器的处理水平,经过反覆测试找到最优值。
附,其他参数设置和说明:
maxThreads 客户请求最大线程数
minSpareThreads Tomcat初始化时创建的 socket 线程数
maxSpareThreads Tomcat连接器的最大空闲 socket 线程数
enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
connectionTimeout 连接超时
minProcessors 服务器创建时的最小处理线程数
maxProcessors 服务器同时最大处理线程数
URIEncoding URL统一编码

3.内存设置
设置tomcat服务所使用的内存大小,可以提高程序性能。比如上面使用了多实例,那么设置内存则在指定tomcat目录上一行加上:
linux:

export JAVA_OPTS="-server -Xmx1g -Xms512m -Xmn384m"

windows:

set JAVA_OPTS="-server -Xmx1g -Xms512m -Xmn384m"

这个参数其实就是设置jdk的内存使用大小。具体参数的说明和如何调优,可以多看一下jdk的相关资料。

4.关闭访问日志
如果服务访问较频繁,那么每天在logs目录下会产生大量的访问日志。文件会按天为单位根据日期命名,如:localhost_access_log.2017-11-05.txt。如果不关闭,很可能服务器会被日志撑满。
打开conf/server.xml配置文件,找到:

<Valve className="org.apache.catalina.valves.AccessLogValve"
               directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

注释掉或删除就可以了。

5.其他优化和配置
由于篇服有限,有些参数涉及较方,这里只是提出来,给出一个指引。都是根据业务产场决定是否使用。
开启APR运行模式(提高tomcat处理IO的能力)
会话共享(用于集群)

发表评论

电子邮件地址不会被公开。