java中对jvm参数的调整进行调优

Posted 健康平安的活着

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中对jvm参数的调整进行调优相关的知识,希望对你有一定的参考价值。

一 对jvm的调优

1.1  设置并行垃圾回收器

#年轻代、老年代均使用并行收集器,初始堆内存64M,最大堆内存512M
JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms64m -Xmx512m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

1.2 分析gc日志文件

将gc.log文件上传到gceasy.io查看gc中是否存在问题。

问题1:在5次GC时,系统所消耗的时间大于用户时间,这反应出的服务器的性能存在瓶颈,调度CPU等资源所消耗的时间要长一些。

 问题2:可以看出,吞吐量表现不错,但是gc时,线程的暂停时间稍有点长 。

 问题3:

  • 年轻代的gc有74次,次数稍有多,说明年轻代设置的大小不合适需要调整

  • FullGC有8次,说明堆内存的大小不合适,需要调整

 问题4:年轻代大小设置不合理,导致了多次GC。

 1.3  调整年轻代大小

JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms128m -Xmx1024m -XX:NewSize=64m -XX:MaxNewSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

将初始堆大小设置为128m,最大为1024m,初始年轻代大小64m,年轻代最大256m

查看效果:可以看到GC次数要明显减少,说明调整是有效的。

 1.4 设置G1收集器

#设置了最大停顿时间100毫秒,初始堆内存128m,最大堆内存1024m
JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xms128m -Xmx1024m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

效果:可以看到,吞吐量有所提升,评价响应时间也有所缩短。

 

以上是关于java中对jvm参数的调整进行调优的主要内容,如果未能解决你的问题,请参考以下文章

jvm调优

JVM快速调优手册之六: JVM参数设置及分析

「JVM」调优参数总结

Spark性能调优篇七之JVM相关参数调整

JVM优化-上篇

如何设置jvm启动参数