Tomcat性能优化

Tomcat性能优化
1.内存设置 VM参数调优:
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。 
Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置: 
JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】' 
需要把这个两个参数值调大。例如: 
JAVA_OPTS='-Xms256m -Xmx512m' 
表示初始化内存为256MB,可以使用的最大内存为512MB。
-Xms<size> 表示JVM初始化堆的大小,-Xmx<size>表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。表示初始化内存为256MB,可以使用的最大内存为512MB。 
Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置: 
set JAVA_OPTS=-XX:PermSize=128M -XX:MaxPermSize=512m -Xms1024m -Xmx2048m
一定加在catalina.bat最前面。 
Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件增加如下设置: 
 if [ -z "$LOGGING_MANAGER" ]; then
#JAVA_OPTS="$JAVA_OPTS -server -Xms2048M -Xmx2048M -XX:PermSize=512M -XX:MaxNewSize=512M -XX:MaxPermSize=512M -Djava.awt.headless=true"
JAVA_OPTS="-XX:PermSize=512M -XX:MaxPermSize=1024m -Xms1024m -Xmx1024m"
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
else
  JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"
fi
注意:前后二者区别,有无set,有无双引号。 
2.HTTP优化配置 server.xml
<Connector 
port="8080" 
enableLookups="false"
disableUploadTimeout="true" 
useBodyEncodingForURI="true" 
URIEncoding="UTF-8"
maxHttpHeaderSize="8192" 
maxThreads="600" 
minSpareThreads="100" 
maxSpareThreads="500" 
acceptCount="700" 
connectionTimeout="20000" 
keepAliveTimeout="15000"
maxKeepAliveRequests="1"
compression="on" 
compressionMinSize="2048" 
noCompressionUserAgents="gozilla, traviata" 
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 
redirectPort="8443" 
/> 
引用
maxThreads:Tomcat可创建的最大的线程数。 
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。  
minSpareThreads:Tomcat初始化时创建的线程数。 
maxSpareThreads:一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。 
connnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。 
keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15秒。 
maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间) 
maxHttpHeaderSize - http请求头信息的最大程度,超过此长度的部分不予处理。一般8K。 
disableUploadTimeout - 上传时是否使用超时机制 
enableLookups - 是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
compression="on" 打开压缩功能 
compressionMinSize="2048" 启用压缩的输出内容大小,这里面默认为2KB 
noCompressionUserAgents="gozilla, traviata" 压对于以下的浏览器,不启用缩 
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"  要压缩的文件类型 
参考http://www.wityx.com
3.禁用DNS查询
 当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值为false: 

其它做法
1、修改tomcat让其支持NIO
vi /opt/tomcat6/conf/server.xml
    <Connector port="80" protocol="HTTP/1.1"        connectionTimeout="20000"         redirectPort="8443" />
修改成支持NIO的类型,配置如下 :
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol "   connectionTimeout="20000"     redirectPort="8443" />
2、增加tomcat的处理线程数
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"       connectionTimeout="20000"         redirectPort="8443"   maxThreads="800"  acceptCount="1000"/>
3、增加tomcat的虚拟内存空间
vi /opt/tomcat6/bin/catalina.sh
#增加内存,参考http://www.wityx.com
export JAVA_OPTS='-server -Xms512m -Xmx2048m  -XX:PermSize=128M -XX:MaxPermSize=512M '
#让tomcat自己管理内存
export JAVA_OPTS=$JAVA_OPTS -Dcom.sun.management.jmxremote.port=1090 -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_HOME%\conf\logging.properties"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值