tomcat 配置文件优化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat 配置文件优化相关的知识,希望对你有一定的参考价值。

一、前言

对于tomcat的优化主要包括两个方面,一个是对Tomcat启动参数进行优化配置,另一个是Tomcat容器内的优化配置,下面分别用具体详细的参数配置说明进行分析(更多推荐“tomcat的HTTPS安全通道配置”、源码分析等)

二 、Tomcat内存优化

 tomcat启动参数设置,主要在其bin目录下catalina文件(window环境对象catalina.bat、linux环境对应catalina.sh)进行设置,在文件头部复制下面参数示例,

1. Window环境

    详细的配置参数如下,关于参数的详细说明参见"关于jvm内存优化部分"

1
2
3
4
5
6
7
8
9
10
11
set JAVA_OPTS=-server -Xms1400M -Xmx1400M -Xss512k 
-XX:+AggressiveOpts -XX:+UseBiasedLocking 
-XX:PermSize=128M -XX:MaxPermSize=256M 
-XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC 
-XX:+CMSParallelRemarkEnabled 
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m  
-XX:+UseFastAccessorMethods 
-XX:+UseCMSInitiatingOccupancyOnly 
-Djava.awt.headless=true

    简单配置,如下:

1
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

标准参数(-),所有JVM都必须支持这些参数的功能,而且向后兼容;例如:

-client——设置JVM使用Client模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或开发调试;在32位环境下直接运行Java程序默认启用该模式。

-server——设置JVM使Server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的JDK环境下默认启用该模式。

非标准参数(-X),默认JVM实现这些参数的功能,但是并不保证所有JVM实现都满足,且不保证向后兼容;

非稳定参数(-XX),此类参数各个JVM实现会有所不同,将来可能会不被支持,需要慎重使用;

2. Linux环境

    详细配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k 
-XX:+AggressiveOpts 
-XX:+UseBiasedLocking 
-XX:PermSize=128M -XX:MaxPermSize=256M 
-XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC  
-XX:+CMSParallelRemarkEnabled 
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m 
-XX:+UseFastAccessorMethods 
-XX:+UseCMSInitiatingOccupancyOnly 
-Djava.awt.headless=true "

简单配置如下:

1
JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

3. 单类或jar包

1
java.exe  -Xms128m -Xmx800m   Main

三、Tomcat连接器优化

tomcat本身处理最大并发有服务器系统本身上限决定(一般window的1000左右,linux为2000左右),但是默认设置只有25,因此打开其conf目录下server.xml文件,定位到如下内容,默认是比较简单的配置:

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

 其实详细的默认缺省配置应该是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 <Connector port="8080" 
 protocol="HTTP/1.1"
 URIEncoding="UTF-8" 
 minSpareThreads="25" 
 maxSpareThreads="75" 
 enableLookups="false" 
 disableUploadTimeout="true"
 connectionTimeout="20000"
 acceptCount="300"  maxThreads="300"
 maxProcessors="1000" minProcessors="5"
 useURIValidationHack="false" compression="on"
 compressionMinSize="2048"
 compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
 redirectPort="8443"/>

URIEncoding:设置含有中文名的文件的url编码方式

minSpareThreads:初始化空闲线程数

maxSpareThreads:最大允许空闲线程存活数

connectionTimeout:网络连接超时时间毫秒数

maxThreads:tomcat可创建的最大线程并发数

acceptCount:当线程池满了,即到达maxThreads设置的值,还可以接受客户端请求数到临时队列等待区,等待线程释放后依次排队使用

maxProcessors与minProcessors:window的1000左右,linux为2000左右

compression:给Tomcat配置gzip压缩(HTTP压缩)功能,完整配置如下:

1
2
compression="on" compressionMinSize="2048"             
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain

HTTP 压缩可以大大提高浏览网站的速度,客户端请求资源后,服务器端将文件压缩,由客户端负责解压缩。相对于普通过程(HTML,CSS,Javascript,Text) ,节省40%左右流量。更为重要的是,它可以对动态生成的,包括CGI、php , JSP , ASP , Servlet,SHTML等输出内容也能进行压缩,压缩效率非常高。1)compression="on" 开启压缩功能2)compressionMinSize="2048" 设置压缩的输出内容大小,默认为2KB3)noCompressionUserAgents="gozilla, traviata" 对于指定浏览器,不启用压缩4)compressableMimeType="text/html,text/xml" 压缩类型

四、NIO配置

 默认配置BIO方式兼容版本,NIO(No-blocking I/O)从JDK 1.4起,NIO API作为一个基于缓冲区,并能提供非阻塞I/O操作的API被引入,如需配置如下

将默认service.xml配置

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

修改为

1
<Connector connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>


参考博文:http://www.xwood.net/_site_domain_/_root/5870/5874/t_c255466.html

以上是关于tomcat 配置文件优化的主要内容,如果未能解决你的问题,请参考以下文章

tomcat 配置文件优化

Nginx +Tomcat 动静分离及Tomcat配置文件优化

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

1 如何优化Tomcat

Tomcat虚拟主机配置与优化

jvm 调整tomcat的堆内存和常驻内存catalina.sh