调整垃圾回收器提高服务的吞吐量
# 调整垃圾回收器提高服务的吞吐量
也是使用优化案例1的Tomcat 例子,这次尝试使用不同的垃圾回收器,查看不同垃圾回收器的性能区别。
说明:Linux虚拟机内存都是8G,主要区别是CPU核心数不同。
# 单核场景使用SerialGC
设置Linux虚拟机的CPU核心为单核,Tomcat JVM参数设置(setenv.sh
文件):
export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseSerialGC"
export CATALINA_OPTS="$CATALINA_OPTS -Xms30m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx30m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCDetails"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MetaspaceSize=64m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCDateStamps"
export CATALINA_OPTS="$CATALINA_OPTS -Xloggc:/home/wenwl/apache-tomcat-8.5.66/logs/gc.log"
查看GC情况以及压测吞吐量:
发生一次Full GC,吞吐量为2278.1/sec。
# 单核场景使用ParallelGC
在CPU核心为单核的基础上,使用并行垃圾收集器ParallelGC,JVM参数设置(setenv.sh
文件):
export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseSerialGC"
查看GC情况以及压测吞吐量:
同样发生一次Full GC,吞吐量为2303.6/sec,吞吐量并没有明显变化。在单核使用并发垃圾收集器ParallelGC意义不大。
# 多核场景使用ParallelGC
将CPU核心该为4核,使用并行垃圾收集器Parallel GC。查看GC情况以及压测吞吐量:
同样发生一次Full GC,吞吐量为6814.8/sec。吞吐量大幅提升,直接翻了近3倍!!说明我们在多核机器上面采用并行收集器对于系统的吞吐量有一个显著的效果。
# 多核场景使用ParNew + CMS
在多核心情况下使用CMS GC:
export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseConcMarkSweepGC"
查看GC情况以及压测吞吐量:
发生两次Full GC,吞吐量为6765.9/sec。吞吐量较ParallelGC没有明显变化,但是各个百分比的平均的响应比ParallelGC较优。
# 多核场景使用G1
在多核心情况下使用G1:
export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC"
查看GC情况以及压测吞吐量:
没有发生Full GC,吞吐量为6546.2/sec。吞吐量较ParallelGC、CMS也没有明显变化,而在百分比的平均的响应比前两者优。
上次更新: 5/28/2023, 10:57:53 PM