tomcat 生产环境 jvm参数配置

仅供参考 JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=256m -XX:PermSize=512m -XX:MaxPermSize=512m"php

JAVA_OPTS="-Djava.awt.headless=true #这个设置不设置都没有什么区别 -Dfile.encoding=UTF-8 # 设置字符集 -server # 设置 jvm 为服务器 模式,在win 里面默认不是 服务默认, Linux 下默认是 服务器模式 -Xms2048m -Xmx2048m # 堆初始值和堆最大值同样 此值能够设置与-Xmx相同,以免每次垃圾回收完成后JVM从新分配内存。html

-Xss256k # 设置每一个线程的堆栈大小。JDK5.0之后每一个线程堆栈大小为1M,之前每一个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减少这个值能生成更多的线程。可是操做系统对一个进程内的线程数仍是有限制的,不能无限生成,经验值在3000~5000左右。java

-Xmn1000m # 设置年轻代大小。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代通常固定大小为64m,因此增大年轻代后,将会减少年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。tomcat

-XX:+UseParNewGC # 设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,因此无需再设置此值。服务器

-XX:CMSFullGCsBeforeCompaction=5 # 因为并发收集器不对内存空间进行压缩、整理,因此运行一段时间之后会产生“碎片”,使得运行效率下降。此值设置运行多少次GC之后对内存空间进行压缩、整理。并发

-XX:ParallelGCThreads=4 #配置并行收集器的线程数,即:同时多少个线程一块儿进行垃圾回收。此值最好配置与处理器数目相等。oracle

-XX:+UseConcMarkSweepGC # 设置年老代为并发收集less

-XX:NewSize=1000m -XX:MaxNewSize=1000m # 新生 代 的初始值 和 最大值jvm

-XX:PermSize=200m -XX:MaxPermSize=200m # 持久代 初始值 和 最大值 ,永久代存放Class、Method元信息,其大小跟项目的规模、类、方法的量有关,通常设置为128M就足够,设置原则是预留30%的空间。 "jsp

这个设置是 网上说的 什么 响应时间 优化设置, 这样配置后,最明显的就是,发布的时候,tomcat启动快多了。 确实响应快多了。

参考: http://www.javashuo.com/article/p-yfnpvaoj-bv.html 参考: http://www.blogjava.net/midstr/archive/2008/09/21/230265.html 参考 官方的: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

https://my.oschina.net/zhaolin/blog/744818

https://my.oschina.net/woate/blog/380104

http://www.cnblogs.com/zhangpan1244/p/6197832.html

备注: -Xmn 新生代内存大小的最大值,包括E区和两个S区的总和,使用方法如:-Xmn65535,-Xmn1024k,-Xmn512m,-Xmn1g (-Xms,-Xmx也是种写法) -Xmn只能使用在JDK1.4或以后的版本中,(以前的1.3/1.4版本中,可以使用-XX:NewSize设置年轻代大小,用-XX:MaxNewSize设置年轻代最大值); 若是同时设置了-Xmn和-XX:NewSize,-XX:MaxNewSize,则谁设置在后面,谁就生效;若是同时设置了-XX:NewSize -XX:MaxNewSize与-XX:NewRatio则实际生效的值是:min(MaxNewSize,max(NewSize, heap/(NewRatio+1)))(看考:http://www.open-open.com/home/space.php?uid=71669&do=blog&id=8891) 在开发、测试环境,能够-XX:NewSize 和 -XX:MaxNewSize来设置新生代大小,但在线上生产环境,使用-Xmn一个便可(推荐),或者将-XX:NewSize 和 -XX:MaxNewSize设置为同一个值,这样可以防止在每次GC以后都要调整堆的大小(即:抖动,抖动会严重影响性能)

配置了 响应时间 的方式后,启动的时候 ,快不少了,程序反应快多了,可是 运行一段时间后, tomcat 就反应比较慢了。特别是 表格查询的时候, 所以配置 处理 能力强点的 jvm

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8   -server -Xms3800m -Xmx3800m -Xss256k -XX:+UseParallelGC -XX:+UseParallelOldGC  -XX:ParallelGCThreads=20 -XX:NewSize=2048m -XX:MaxNewSize=2048m -XX:PermSize=200m -XX:MaxPermSize=200m"

缘由的 响应时间 优化的,正在找缘由 ,为何发布的时候 项目反应快,可是 以后反应慢?

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms3072m -Xmx3072m -Xss256k -XX:+UseParNewGC -XX:CMSFullGCsBeforeCompaction=5 -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC  -XX:NewSize=1300m -XX:MaxNewSize=1300m -XX:PermSize=200m -XX:MaxPermSize=200m"
相关文章
相关标签/搜索