线上服务的JVM参数配置
2016-12-28 17:45
197 查看
最近在做线上机器的优化,发现很多配置都不太合理或者配置不正确。就想着能不能有一个统一的比较不错的默认配置,然后再在上面调优呢,后来经过参考网上的大神和自己的一些优化经验,弄出了一套默认配置
J**VM默认推荐配置:**
前端机器:
-Xmx2048m -Xms2048m -XX:MaxPermSize=256m -XX:PermSize=128m -XX:NewRatio=3 -XX:ParallelCMSThreads=4 -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+UseConcMarkSweepGC -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=65 -server
后端机器
-Xms512m -Xmx2024m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseParallelGC -XX:TargetSurvivorRatio=70 -XX:+UseAdaptiveSizePolicy -Djava.awt.headless=true
服务器一定要开启-server模式,性能差距很大
红色部分是需要根据服务器配置调整的,permsize一般最大设置256即可,128M肯定够用,permsize在jdk1.8改名叫metaspace配置改为 -XX:MetaspaceSize -XX:MaxMetaspaceSize
对于前端接口,偏重响应的,尽量使用CMS收集器,降低GC停顿时间,后台定时任务对响应时间不敏感,追求吞吐量,可以使用ParallelGC 收集器
但也不是绝对,要在这个配置上不断调优,前端接口工程里如果定时任务耗时较多,访问量不大,最好是启用ParallelGC 收集器
jvm配置如何应用到项目中呢?从常用的服务器中分别说明
tomcat
对于tomcat来说配置来说,配置到各个虚拟目录的启动脚本
#!/bin/bash export CATALINA_HOME=/usr/local/tomcat-6.0.35 export CATALINA_BASE=/data/Domains/dynamic.local/server1 ###JAVA export JAVA_HOME=/data/servers/jdk export JAVA_OPTS='-Xmx2048m -Xms2048m -XX:MaxPermSize=256m -XX:PermSize=128m -XX:NewRatio=3 -XX:ParallelCMSThreads=4 -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+UseConcMarkSweepGC -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=65 -server' $CATALINA_HOME/bin/startup.sh -config $CATALINA_BASE/conf/server.xml
resin2
可以放到${RESIN_HOME}/bin/http.sh里面
args="-J-Xmx2048m -J-Xms2048m -J-XX:MaxPermSize=256m -J-XX:PermSize=128m -J-XX:NewRatio=3 -J-XX:ParallelCMSThreads=4 -J-XX:+CMSClassU nloadingEnabled -J-XX:+DisableExplicitGC -J-XX:+PrintGCDetails -J-XX:+PrintHeapAtGC -J-XX:+PrintTenuringDistribution -J-XX:+UseConcMa rkSweepGC -J-XX:+PrintGCTimeStamps -J-XX:+PrintGCDateStamps -J-XX:CMSFullGCsBeforeCompaction=0 -J-XX:+UseCMSCompactAtFullCollection - J-XX:CMSInitiatingOccupancyFraction=65 -J-server"
resin4
有一个resin.properties的文件,这个也可以每个项目一个
修改里面的配置
jvm_args :-Xmx2048m -Xms2048m -XX:MaxPermSize=256m -XX:PermSize=128m -XX:NewRatio=3 -XX:ParallelCMSThreads=4 -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+UseConcMarkSweepGC -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=65 jvm_mode : -server
对于后台程序
JAVA_HOME/bin/java -Xms512m -Xmx2024m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseParallelGC -XX:TargetSurvivorRatio=70 -XX:+UseAdaptiveSizePolicy -Djava.awt.headless=true
后传:
对于jdk8配置的G1收集器,由于目前性能并不稳定,所以追求响应性能首选CMS
年轻代回收期和年老代回收期可以搭配使用图 图中有连线的说明可以搭配使用
相关文章推荐
- JVM参数配置的线上教训
- 线上机器JVM参数配置
- JVM参数配置的线上教训
- web服务启动jvm参数简单配置
- Java虚拟机(JVM)参数配置说明
- JVM参数配置大全
- JVM参数详解以及配置调优
- JVM参数配置
- JVM配置参数中文说明
- Java虚拟机(JVM)参数配置说明(转)
- Java虚拟机(JVM)参数配置说明(转自:http://lavasoft.blog.51cto.com/62575/25492)
- Java虚拟机(JVM)参数配置说明
- 不同场景下JVM参数的配置方式
- Java虚拟机(JVM)参数配置说明
- jvm垃圾回收参数配置
- JVM参数配置详解
- Java虚拟机(JVM)参数配置说明
- Java虚拟机(JVM)参数配置说明(转)
- tomcat 配置jvm参数
- Java虚拟机(JVM)参数配置说明