(本文档仅供参考)
场景
本次共测试了2个Excel分析资源在64g, 128g, 200g三种内存规格下。对应4种GC策略,进行10 并发,5分钟的压测。4种GC策略及其JVM参数设置如下
GC_1 : Serial -XX:+UseSerialGC
GC_2: Parallel Old/Serial -XX:+UseParallelGC -XX:+UseParallelOldGC
GC_3: CMS -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
GC_4: G1 -XX:+UseG1GC
业务库:MYSQL
内存使用情况
以资源1为例:
GC_1 : Serial
三个内存规格下,内存的使用都在32g左右。未随着Tomcat分配内存大小变多占用更多内存。
GC_2: Parallel Old/Serial
在64g内存下占用37g左右,128g内存下占用50g左右, 200g内存下占用68g左右。随着Tomcat分配内存大小变多会占用更多内存。
GC_3: CMS
三个内存规格下,内存的使用都在43g左右。未随着Tomcat分配内存大小变多占用更多内存。
GC_4: G1
在64g内存下占用45g左右,128g内存下占用60g左右, 200g内存下占用90g左右。随着Tomcat分配内存大小变多会占用更多内存。
响应时间
根据上图表显示,GC策略2和4的平均响应时间较1和3要小,对应内存有随着Tomcat规格上升而使用更多内存的GC2和GC4 用时较少。其中时间占用最多的接口
是/smartbi/vision/ssreportServlet进行SQL查询的时间。
测试结论:
使用不同的GC策略,对内存的使用情况以及平均响应时间均有影响。
- 内存占用:其中Serial和CMS回收策略,提高JVM分配内存,内存的占用趋于固定值(Serial:32G和CMS:43G); 而Parallel Old/Serial和G1回收策略,内存占用情况,是随着JVM分配内存提高而提高。
- 响应时间:综合结果分析,Parallel Old/Serial和G1回收策略下,随着内存增加响应速度提高较明显。其中G1回收策略,在200g内存下的响应时间相较于其他回收策略都低。
- 综上:基于G1回收策略随着内存增大能更充分利用内存,且性能表现亦有所提升。我们推荐使用G1回收策略。
回收策略设置
Jdk默认回收策略为PS(PS Scavenge、PS MarkSweep)回收策略。推荐使用G1回收策略。
当前GC策略查看:smartbi右上角菜单系统监控-垃圾回收活动。
Smartbi设置回收策略:../smartbi/tomcat/bin/目录下,setenv.sh文件。若为默认GC则直接在JAVA_OPTS参数末尾添加 -XX:+UseG1GC 后重启smartbi。
启动后查看回收策略如下图。
测试数据截图
Tomcat64G:
资源1:公式嵌套-46W透视-15SHEET-透视表+25w7种公式
GC-1_Serial
GC-2_Parallel Old/Serial
GC-3_CMS
GC-4_G1
资源2:来源两个透视分析+透视表
GC-1_Serial
GC-2_Parallel Old/Serial
GC-3_CMS
GC-4_G1
Tomcat128G:
资源1:公式嵌套-46W透视-15SHEET-透视表+25w7种公式
GC-1_Serial
GC-2_Parallel Old/Serial
GC-3_CMS
GC-4_G1
资源2:来源两个透视分析+透视表
GC-1_Serial
GC-2_Parallel Old/Serial
GC-3_CMS
GC-4_G1
Tomcat200G:
资源1:公式嵌套-46W透视-15SHEET-透视表+25w7种公式
GC-1_Serial
GC-2_Parallel Old/Serial
GC-3_CMS
GC-4_G1
资源2:来源两个透视分析+透视表
GC-1_Serial
GC-2_Parallel Old/Serial
GC-3_CMS
GC-4_G1
word报告:GC策略测试.docx