tomcat7性能调优

tomcat的优化分为两块:
1、tomcat启动命令中的优化参数,即JVM优化
2、tomcat容器自身参数的优化

tomcat启动参数位于tomcat的安装目录下\bin目录下,liunx是catalina.sh

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 “

-server
只要你的tomcat是运行在生产环境中的,这个参数必须加上,因为tomcat默认是以一种叫做java-client的模式运行。-server意味着tomcat以真实的production的模式运行,能够处理更大,更高的并发处理能力,更快捷的jvm垃圾回收机制。

-Xms -Xmx
即jvm的内存设置,把Xms和Xmx两个值设置成一样是最优的做法。系统的并发数越来越高,内存使用情况逐步上升,上升到最高点不能上升了,开始回落,不要认为回落是好事,尤其是大起大落,在内存回落时他付出的代价是cpu的高速运转进行垃圾回收,此时严重的甚至会造成你的系统出现卡壳,网页突然死在哪里十几秒设置几十秒,因为jvm正在垃圾回收。

这个值设置为多少合适,需要根据自己机器来判断,需要先进行测试,测试的命令是:java -Xmx1800m -version 如果一台机器上部署多个tomcat,注意这个数值的分配。

-Xmn
设置年轻代内存的大小。整个的堆内存分为=年轻代大小+年老代大小+持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。该值对系统性能影响较大,sun官方推荐配置为整个堆的3/8.

-Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序,每一个线程需要占用多少内存,可能会有多少线程同时进行等。一般不易设置超过1M,要不然容易出现out of memory

XX:+AggressiveOpts 启用这个参数,则每当JSK版本升级时,你的JVM都会使用最新加入的优化技术

XX:+UseBiasedLocking
启用了一个优化的线程锁,在Appserver中,每个http请求就是一个线程,有的请求短,有的请求长,就会有请求排队的现象,甚至是线程阻塞。这个参数使得你的appserver内对线程处理自动进行最优调配。

-XX:PermSize=128M -XX:MaxPermSize=256M
jvm使用-XX:PermSize 设置非堆内存初始值,默认是物理内存的1/64;在数据量很大的文件导出时,一定要把这个值设置好,否则会出现内存溢出的错误。
XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4.如果是物理内存4GB,就设置64M,这个值permSize就是永生代内存初始大小。
-XX:+DisableExplicitGC
在程序代码中不允许有System.gc() 调用。

-XX:UseParNewGC
对年轻代采用多线程并行回收

-XX:UseConcMarkSweepGC
即CMS gc,使用gc估算触发和heap占用触发。频繁GC会造成JVM的大起大落从而影响系统的效率。而CMS GC可以再GC次数增多的情况下,每次GC的相应时间都很短。

-XX:MaxTenuringThreshold
设置垃圾最大年龄,如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大的值,则年轻代对象会在survivor区进行多次复制,这样可以增加对象在年轻代存活的时间,增加在年轻代即被回收的概率。

-XX:+CMSParallelRemarkEnabled
在使用UseParNewGC的情况下,尽量减少mark的时间

-XX:+UseCMSCompactAtFullCollection
在使用concurrent gc的情况下,防止memoryfragmention,对live object进行整理,使memory碎片减少

-XX:LargePageSizeInBytes=128m
指定 java heap的分页页面的大小

-XX:+UseFastAccessorMethods
get,set方法转化为本地代码

-XX:UseCMSInitialingOccupancyOnly
在oldgeneration在使用了初始化的比例后concurrent collector 启动收集。

-XX:CMSInitiatingOccupancyFraction=70
公式:(Xmx-Xmn)*(100-CMSInititiatingOccupancyFraction)/100>=xmn 这个值设置的不对会出现promotion failed。

-Djava.awt.headless=true
在web网页输出GIF/JPG等流,在windows环境下,没有问题,但是在liunx/unix环境下经常会碰到exception导致你再windows开发环境下图片显示好好的,在liunx、unix下显示不出来,加上这个参数可以避免这个情况。

tomcat自身参数的优化,在tomcat的安装目录conf\server.xml中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值