java面试题网

普通会员

489

帖子

9

回复

201

积分

楼主
发表于 2020-05-19 15:23:20 | 查看: 5078| 回复: 0

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"  要压缩的文件类型 


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
#增加内存
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"


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1407_1_1.html


java面试题交流群:327440556      阿里云产品2000元通用优惠券限时领


您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018