tomcat性能优化总结

 

一、   Tomcat JVM 参数设置

推荐JVM参数

类型

参数

运行模式

-sever,生产环境下建议开启服务器模式

整个堆内存大小

推荐将-Xms和-Xmx设置相同的值避免在每次GC 后调整堆的大小,sun官方文档建议最大不要超过可用物理内存的80%,经验值为物理内存的一半

年轻代空间大小

-XX:NewSize=256m –XX:MaxNewSize=256m

永久代空间大小

-XX:PermSize=256m -XX:MaxPermSize=256m
这个参数一般不影响系统性能,该区域用于存放Class信息,如果出现PermGen space错,或者加载的class、jar比较多可以适当增加该值,一般设置为256已经足够

GC日志

-Xloggc:$CATALINA_BASE/logs/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps

GC算法

-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75

发生OOM时

创建堆内存转储文件
(JDK6以后才支持)

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=$CATALINA_BASE/logs

Tomcat JVM 参数设置主要修改catalina.bat 或者 catalina.sh 文件中JAVA_OPTS变量。

假设服务器的配置: 8 CPU8G内存,JDK1.6.x (该服务器仅作为Web应用服务器)

JVM参数方案:

-server -Xmx3550m -Xms3550m -Xmn1256m -Xss256k -XX:SurvivorRatio=6 -XX:PermSize=128m  -XX:MaxPermSize=256m -XX:ParallelGCThreads=8 -XX:LargePageSizeInBytes=128m -XX:MaxTenuringThreshold=0 -XX:+UseConcMarkSweepGC -XX:+UseFastAccessorMethods

调优说明:

-Xmx 与 -Xms 相同以避免JVM反复重新申请内存。-Xmx 的大小约等于系统内存大小的一半,即充分利用系统资源,又给予系统安全运行的空间。

-Xmn1256m 设置年轻代大小为1256MB。此值对系统性能影响较大,Sun官方推荐配置年轻代大小为整个堆的3/8。(3/8 * 3350=1256.25)

-Xss256k 设置较小的线程栈以支持创建更多的线程,支持大数据量、高并发访问,特别是程序中有递归行为的,并提升系统性能。

-XX:SurvivorRatio=6 设置年轻代中Eden区与Survivor区的比值。系统默认是8,根据经验设置为6,则2个Survivor区与1个Eden区的比值为2:6,一个Survivor区占整个年轻代的1/8。

-XX:ParallelGCThreads=8 配置并行收集器的线程数,即同时8个线程一起进行垃圾回收。此值一般配置为与CPU数目相等。

-XX:LargePageSizeInBytes=128m 内存页的大小, 不可设置过大, 会影响Perm(永久代)的大小

-XX:+UseFastAccessorMethods原始类型的快速优化

-XX:MaxTenuringThreshold=0 设置垃圾最大年龄(在年轻代的存活次数)。如果设置为0的话,则年轻代对象不经过Survivor区直接进入年老代。在高并发环境下,其内存要么被缓存起来以减少直接访问DB,要么被快速回收以支持高并发请求,因此其内存对象在年轻代存活多次意义不大,可以直接进入老年代,根据实际应用效果,建议将此值设置为0。

-XX:+UseConcMarkSweepGC 设置老年代为并发收集,尽量减少应用的暂停时间,减少Full GC发生的几率。

 

二、   Tomcat 线程池设置

tomcat线程池指定Web请求负载的数量,可以通过调整连接器属性“maxThreads”完成设置。maxThreads的值应该根据流量的大小,如果值过低,将有没有足够的线程来处理所有的请求,请求将进入等待状态,只有当一个的处理线程释放后才被处理;如果设置的太大,Tomcat的启动将花费更多时间。因此它取决于我们给maxThreads设置一个正确的值。和连接数相关的参数有:  

  1. minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
  2. maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
  3. acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
  4. enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
  5. connectionTimeout:网络连接超时,单位:毫秒。通常可设置为30000毫秒。

其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxHttpHeaderSize="8192"
               minProcessors="100"
               maxProcessors="5000"
               maxThreads="5000"
               minSpareThreads="1000"
               maxSpareThreads="4000"
               enableLookups="false"
               acceptCount="5000"
               disableUploadTimeout="true"
               connectionTimeout="20000"
               debug="0"
               redirectPort="8443" />

三、GZIP压缩

在server.xml配置文件中设置压缩的选项:

使用gzip对HTML、CSS、JS、JSON等文件进行压缩,通常可以节省大约50%-70%的大小,这样可以提高页面的请求时间和响应速度。

<Connector executor=" tomcatThreadPool" port="8080" //开启线程池
    protocol="org.apache.coyote.http11. Http11AprProtocol" //开启Apr协议,需要安装Apr支持
    compression=“on"
 
    noCompressionUserAgents="gozilla,traviata"
 
    compressionMinSize=“4096”  
 
    compressableMimeType=“text/html,text/xml,text/javascript,text/css,text/plain,text/javascript,text/json, application/json,application/x-javascript ,application/javascript ”
 
    redirectPort="8443"  />

备注:如果发现内容没有被压缩,可以考虑调整compressionMinSize大小,如果请求资源小于这个数值,则不会启用压缩。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值