宿主机硬件:8核/16G内存/50G磁盘,系统:CentOS 7.7,Docker 单实例。
1.JDK默认启动参数
硬件:4核/8G内存/256G磁盘,系统:Windows 7。
查看 JDK1.8 默认启动参数命令:
# java -XX:+PrintCommandLineFlags -version
返回:
-XX:InitialHeapSize=126504256 //等价于-Xms1g,JVM 堆初始大小(新生代 + 老年代)
-XX:MaxHeapSize=2024068096 //等价于-Xmx2g,JVM 堆最大大小(新生代 + 老年代)
-XX:+PrintCommandLineFlags
-XX:+UseCompressedClassPointers
-XX:+UseCompressedOops
-XX:-UseLargePagesIndividualAllocation
-XX:+UseParallelGC
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
2.IO密集型系统调优
硬件:8核/16G内存/50G磁盘,系统:CentOS 7.2。
我们系统的特点:
- IO 密集型系统,注重响应速度,低停顿时间,以给用户带来较好的体验,那么选择 ParNew + CMS 收集器就非常合适了;
- IO 密集型系统随 IO 的增大,性能会降低;
通过分析 Heap Dump 并结合压测结果,我们增加了以下调优参数:
-Xms4096m //JVM 堆初始大小
-Xmx4096m //JVM 堆最大大小
-XX:MaxPermSize=256m //设置最大非堆内存的大小
-XX:MetaspaceSize=256m //元数据空间的初始大小
-XX:NewRatio=1 //新生代和老年代的比值,1 表示新生代:老年代=1:1,即新生代占堆的1/2
-XX:ParallelGCThreads=8 //在进行并行GC的时候,可用于GC的线程数
-XX:GCTimeRatio=19
-XX:MaxGCPauseMillis=50
-XX:+UseAdaptiveSizePolicy
通过压测,发现整体性能提高了 10% 左右。
除了自己加的调优参数,我们的服务里还包含了容器实例本身的一些参数,这里做一下记录,启动 JVM 后的所有运行参数:
-Dlog.path.prefix=/export/Logs/simplesoa/server1
-Ddeploy.app.id=4465
-Ddeploy.app.name=simplesoa
-Ddeploy.instance.id=937885
-Ddeploy.data.path=/export/Instances/simplesoa
-Ddeploy.logs.path=/export/Logs/simplesoa
-Ddeploy.instance.logs.path=/export/Logs/simplesoa/server1
-Dins_id=937885
-Ddeploy.dynamic.config.dir=/export/Packages/simplesoa/20190826100010/WEB-INF/classes
-Djava.util.logging.config.file=/export/Instances/simplesoa/server1/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.library.path=/usr/local/lib
-Xms4096m
-Xmx4096m
-XX:MaxPermSize=256m
-XX:+UnlockExperimentalVMOptions
-XX:MetaspaceSize=256m
-XX:NewRatio=1
-XX:ParallelGCThreads=8
-XX:GCTimeRatio=19
-XX:MaxGCPauseMillis=50
-XX:+UseAdaptiveSizePolicy
-Djava.awt.headless=true
-Dsun.net.client.defaultConnectTimeout=60000
-Dsun.net.client.defaultReadTimeout=60000
-Djmagick.systemclassloader=no
-Dnetworkaddress.cache.ttl=300
-Dsun.net.inetaddr.ttl=300
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/export/Instances/simplesoa/server1/logs
-XX:ErrorFile=/export/Instances/simplesoa/server1/logs/java_error_%p.log
-Xbootclasspath/a:/export/Packages/simplesoa/20190826100010/WEB-INF/lib/jst-jvm-enhance-1.0.0-SNAPSHOT.jar
-javaagent:/export/Packages/simplesoa/20190826100010//WEB-INF/lib/jst-jvm-enhance-1.0.0-SNAPSHOT.jar
-Djava.endorsed.dirs=/export/servers/tomcat8.5.45/endorsed
-Dcatalina.base=/export/Instances/simplesoa/server1
-Dcatalina.home=/export/servers/tomcat8.5.45
-Djava.io.tmpdir=/export/Instances/simplesoa/server1/temp
3.CPU密集型系统调优
硬件:8核/16G内存/50G磁盘,系统:CentOS 7.2。