tomcat 之启动优化

1.概述

 

2.修改位置

2.1 大概在tomcat的bin目录下catalina.sh文件的97行

2.2 修改内容如下(一般添加在catalina.sh文件中97行左右)

     添加参数如下:

export JAVA_OPTS="-server -Xms1600M -Xmx1600M -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"

     注意:在编译的时候需要将Tomcat编译 ./shutdown.sh 编译好之后重新开启 ./startup.sh 然后在执行下面的步骤看是否生效。 

 

3.是否生效

     ps -ef | grep tomcat

     jmap –heap 进程号 (Tomcat进程号 )

 

4.参数逐项说明

4.1 -server

     -server 启用jdk 的 server 版:

     只要你的tomcat是运行在生产环境中的,这个参数必须添加,因为tomcat默认是以一种叫java –client的模式来运行的,server即意味着你的tomcat是以真实的production的模式在运行的,这也就意味着你的tomcat以server模式运行时将拥有,更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量。

 

4.2 -Xms–Xmx

     -Xms java虚拟机初始化时的最小内存;其初始空间(即-Xms)是物理内存的1/64,

     -Xmx java虚拟机可使用的最大内存; 最大空间(-Xmx)是物理内存的1/4,

     -Xmn年轻代堆内存大小,默认为物理内存的1/64。

     可以利用JVM提供的-Xmn -Xms -Xmx等选项,要加“m”说明是MB,否则就是KB了,在启动tomcat时会报内存不足。

     把Xms与Xmx两个值设成一样是最优的做法

     一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小。因为默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。

     说明:如何知道我的 JVM 能够使用最大值

 

4.3 -Xss

     是指设定每个线程的堆栈大小。一般设置不超过1M,要不然容易出现out of memory。

 

4.4 -XX:+AggressiveOpts

     自带魔法属性,从单词可以看出,积极的、生猛的,也即可以将最新版的JDK优化后的新特性自动注入

 

4.5  -XX:+UseBiasedLocking

     启用一个优化了的线程锁,对于高并发访问很重要 ,太多的请求忙不过来它自动优化,对于各自长短不一的请求,出现的阻塞、排队现象,他自己优化。

 

4.6 -XX:PermSize -XX:MaxPermSize

     -XX:PermSize设置非堆内存初始值,默认是物理内存的1/64,在数据量的很大的文件导出时,一定要把这两个值设置上,否则会出现内存溢出的错误。

     -XX:MaxPermSize设置最大非堆内存的大小,默认是32M,建议达到物理内存的1/4。

 

4.7 -XX:MaxNewSize

     新生代内存的最大内存值,默认是16M

 

4.8 -XX:+DisableExplicitGC

     在程序代码中不允许有显示的调用”System.gc()”,避免内存的大起大落

 

4.9 -XX:MaxTenuringThreshold:设置垃圾最大年龄。

     ① 如果设置为零的话,则年轻代对象不经过Survivor区直接进入年老代。对于年老代比较多的应用,可以提高效率。

      ② 如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率,这个值的设置是根据本地监控后得到的一个理想的值,不能一概而论原搬照抄。

 

4.10 -XX:+UseConcMarkSweepGC

     即CMS gc,这一特性只有jdk1.5即后续版本才具有的功能,它使用的是gc估算触发和heap占用触发。

我们知道频频繁的GC会造面JVM的大起大落从而影响到系统的效率,因此使用了CMS GC后可以在GC次数增多的情况下,每次GC的响应时间却很短,比如说使用了CMS GC后经过jprofiler的观察,GC被触发次数非常多,而每次GC耗时仅为几毫秒

     添加该参数表示启动并发标识-清理(Mark-Sweep)回收器(CMS) 

 

4.11 -XX:+UseParNewGC

     对年轻代采用多线程并行回收,这样收得快

 

4.12 -XX:+CMSParallelRemarkEnabled

     在使用UseParNewGC 的情况下, 尽量减少mark 的时间,降低标记停顿

 

4.13 -XX:+UseCMSCompactAtFullCollection

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

 

4.14 -XX:LargePageSizeInBytes

     指定 Java heap的分页页面大小

 

4.15 -XX:+UseFastAccessorMethods

     get,set 方法转成本地代码

 

4.16 -XX:+UseCMSInitiatingOccupancyOnly

     指示只有在 old generation 在使用了初始化的比例后concurrent collector 启动收集

 

4.17 -Djava.awt.headless=true

     这个参数一般我们都是放在最后使用的,这全参数的作用是这样的,有时我们会在我们的J2EE工程中使用一些图表工具如:jfreechart,用于在web网页输出GIF/JPG等流,

     在winodws环境下,一般我们的app server在输出图形时不会碰到什么问题,但是在linux/unix环境下经常会碰到一个exception导致你在winodws开发环境下图片显示的好好可是在linux/unix下却显示不出来,因此加上这个参数以免避这样的情况出现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值