首页

根据应用的实际性能用例需求对tomcat相关启动参数及配置文件优化

标签:调优,内存,tomcat,配置,性能调优,jvm,内存优化,Tomcat,应用服务器,连接数,内存溢出     发布时间:2015-06-07   

一、前言

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

二 、Tomcat内存优化

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

1. Window环境

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

set JAVA_OPTS=-server -Xms1400M -Xmx1400M -Xss512k @b@-XX:+AggressiveOpts -XX:+UseBiasedLocking @b@-XX:PermSize=128M -XX:MaxPermSize=256M @b@-XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 @b@-XX:+UseConcMarkSweepGC -XX:+UseParNewGC @b@-XX:+CMSParallelRemarkEnabled @b@-XX:+UseCMSCompactAtFullCollection@b@-XX:LargePageSizeInBytes=128m  @b@-XX:+UseFastAccessorMethods @b@-XX:+UseCMSInitiatingOccupancyOnly @b@-Djava.awt.headless=true

    简单配置,如下:

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

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

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

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

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

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

2. Linux环境

    详细配置如下:

JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k @b@-XX:+AggressiveOpts @b@-XX:+UseBiasedLocking @b@-XX:PermSize=128M -XX:MaxPermSize=256M @b@-XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 @b@-XX:+UseConcMarkSweepGC -XX:+UseParNewGC  @b@-XX:+CMSParallelRemarkEnabled @b@-XX:+UseCMSCompactAtFullCollection@b@-XX:LargePageSizeInBytes=128m @b@-XX:+UseFastAccessorMethods @b@-XX:+UseCMSInitiatingOccupancyOnly @b@-Djava.awt.headless=true "

简单配置如下:

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

3. 单类或jar包

java.exe  -Xms128m -Xmx800m   Main

三、Tomcat连接器优化

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

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

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

 <Connector port="8080" @b@ protocol="HTTP/1.1"@b@ URIEncoding="UTF-8" @b@ minSpareThreads="25" @b@ maxSpareThreads="75" @b@ enableLookups="false" @b@ disableUploadTimeout="true"@b@ connectionTimeout="20000"@b@ acceptCount="300"  maxThreads="300"@b@ maxProcessors="1000" minProcessors="5"@b@ useURIValidationHack="false" compression="on"@b@ compressionMinSize="2048"@b@ compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"@b@ redirectPort="8443"/>

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

minSpareThreads:初始化空闲线程数

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

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

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

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

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

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

compression="on" compressionMinSize="2048"             @b@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配置

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

修改为

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

tomcat,配置,性能调优,jvm,内存优化,Tomcat,连接数,内存溢出,nio,bio,Http11NioProtocol

 更多详细配置参见“tomcat连接器优化配置详情”页面

@b@