tomcat性能极限 (tomcat性能优化方式整理)

tomcat优化实战,tomcat性能测试方案

1 Tomcat简介

Apache Tomcat 是一个开源Web服务器软件和是基于Java Servlet容器设计的。

Tomcat官网: https://tomcat.apache.org

tomcat优化实战,tomcat性能测试方案

也可以说Tomcat是一个web服务器。Web服务器是通过接收请求和提供内容来运行网站的。

市面上的Web服务器包含: Tomcat、Apache 这两种。

2 Tomcat的优点与缺点

  • 开源。这意味着专业开发人员不断对其进行更新和改进。
  • 轻量。它提供快速的数据处理,有助于提高您在处理复杂项目时的生产力和效率。
  • 灵活。服务器带有内置的自定义选项。因此可以按需设置参数配置。
  • 速度和效率相对较慢。Tomcat的速度和效率不如Apache Web服务器,特别是静态页面处理。

3 Tomcat 安装

这里以Winds10安装为例。

1、确保你的服务器安装了JVM环境(JDK)。

2、去官网 http://tomcat.apache.org :*载下**Tomcat的zip文件解压到指定的目录【注意目录一定不要有中文】。

3、配置Tomcat环境变量

I、复制Tomcat的安装路径

II、此电脑 -> 属性 -> 高级系统设置 -> 环境变量

III、系统变量 -> 新建 -> 变量名CATALINA_HOME 变量值Tomcat的安装路径 -> OK

tomcat优化实战,tomcat性能测试方案

VI、系统变量 -> Path -> 编辑 -> 新建 -> 输入%CATALINA_HOME%\bin ->OK

tomcat优化实战,tomcat性能测试方案

4、测试是否安装成功

Tomcat安装路径下的bin目录里找到startup.bat,双击运行。

然后打开浏览器访问http://localhost:8080,看一下是否启动成功。

tomcat优化实战,tomcat性能测试方案

如果你进入到了Tomcat的这个欢迎界面,那么恭喜你Tomcat安装成功!

4 Tomcat性能参数设置

4.1、启动时内存参数优化

1、Window下, 找到catalina.bat文件,编辑文并在最前面加上以下参数:

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m;-Duser.timezone=GMT+08;

2、Linux下,周到catalina.sh文件,编辑文件并在最前面添加以下参数:

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"

注意:防止最前面,这里还设置了时区。

4.2、Tomcat线程池配置

如果你的Tomcat版本在Tomcat6以下,就需要设置线程池的陪吃参数了。

1、找到 /conf/server.xml 文件,拉到最下面增加以下配置:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

注意:一般服务器设置最大线程500,最小空闲线程数20,线程最大空闲时间60秒。

2、然后找到 <Connector ...> 节点,增加executor属性:

<Connector executor="tomcatThreadPool"
port="80"
protocol="HTTP/1.1"
maxThreads="600"
minSpareThreads="100"
maxSpareThreads="300"
connectionTimeout="60000"
keepAliveTimeout="15000"
maxKeepAliveRequests="1"
redirectPort="443"
....../>

参数解释:

maxThreads:最大的线程数;
minSpareThreads:最小备用线程数,该值在Tomcat启动时的初始化;
maxSpareThreads:最大备用线程数,当创建的线程超过该值,Tomcat会自动杀死用不到的socket线程;
acceptCount:设定当所有处理请求线程被使用时,此时可以把请求放到队列中排队处理,其余的请求会被拒绝。
connnectionTimeout:网络连接超时(毫秒),通常设为30000毫秒。设为0则永不超时。
enableLookups:是否允许DNS查询。

注意:多个connector可以共用同一个线程池。

4.3、Tomcat连接Connector参数优化

<Connector executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1"
connectionTimeout="60000"
keepAliveTimeout="15000"
maxKeepAliveRequests="1"
redirectPort="443"
maxHttpHeaderSize="8192" URIEncoding="UTF-8" enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>

参数解释:

connectionTimeout: 网络连接超时(毫秒),通常可设为30000毫秒。设为0则永不超时。
keepAliveTimeout:长连接最大保持时间(毫秒)。
maxKeepAliveRequests - 最大长连接数(1表示禁用,-1表示不限制个数,默认100个。一般设在100~200个)
maxHttpHeaderSize:http请求头信息的最大程度,超过该长度的部分不予处理。一般设8K
URIEncoding:指定Tomcat的URL编码格式。
acceptCount:定当所有处理请求线程被使用时,此时可以把请求放到队列中排队处理,超过该值的请求不予处理,默认为10个。
disableUploadTimeout:上传文件时是否使用超时机制。
enableLookups:是否反查域名(true或false)。设置为false时可提高处理能力。
bufferSize:定义要为该连接器创建的输入流提供的缓冲区的大小(以字节为单位)。默认情况下,提供2048字节的缓冲区。
maxSpareThreads - 做多空闲连接数,当创建的线程数超过该值,Tomcat自动杀死不需要的socket线程,默认值为50。
maxThreads:最多同时处理的连接数。即Tomcat可创建的最大的线程数。
minSpareThreads:最小空闲线程数,Tomcat初始化时创建的线程数。
minProcessors:Tomcat4时,最小空闲连接线程数,可提高系统处理性能,默认值为10。
maxProcessors:Tomcat4时,并发处理最大连接线程数,默认值为75。(用于Tomcat4中)

4.4、Tomcat负载均衡、集群的配置

对于负载均衡、集群的配置,只有Tomcat6以上支持。

找到Tomcat的server.xml,编辑该文件添加以下参数:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/temp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

注意事项: 如果tomcat在同机器上,每个节点中用于监听的TCP端口号(port)不能相同,配置范围是4000-4100。

4.5、用JMX监控Tomcat运行状况

如果你想用JMXj监控Tomcat运行状况,需要手工调整启动参数,如下:

1、Woinds下找到cataline.bat文件,编辑并增加一行参数:

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

2、Linux下找到cataline.sh文件,编辑并增加一行参数:

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=%CATALINA_BASE\conf\logging.properties"

注意:

JDK\jre\lib\management\management.properties文件必须有。

重启tomcat服务,然后用Java中的jconsole参数连接,就可以监控Tomcat运行情况了。

4.6、Tomcat多应用配置

找到server.xml文件中的Host标签中,增加一行应用参数:

<Context displayName="OA" docBase="/app/web-apps/GACWP" path="" />

注意:path代表上下文名称,空表示是根路径。