再论Java虚拟机XMS与XMX设置

再论Java虚拟机XMS与XMX设置

   1.1 背景
  某银行的自助设备前置机系统为核心系统,故对系统可用性和性能有着极高的要求,运维管理面临很大挑战。但是在3月份,出现了100会话并发时,系统CPU使用为100%,大量交易回滚,无法提供正常的ATM终端服务,为此需要对故障进行分析,对系统进行优化,优化系统性能以大幅提高处理能力
   1.2 应用环境
  WebLogic应用服务器、 Oracle 数据库
  单实例WebLogic环境,JVM配置为-Xms=1g  -Xmx 2g
  AIX 5.3服务器。
  自助设备前置机系统,包括信用卡消费和跨行取款等交易。
   1.3 实施收益
  1.3.1 -Xms=1g  -Xmx 2g
  通过在该行开发中心UAT环境进行压力 测试,通过监控软件进行分析系统性能,在采用JVM 堆大小-Xms=1g  -Xmx 2g,并发会话数为100情况下:
再论Java虚拟机XMS与XMX设置_第1张图片
  关键事务性能
  关键事务平均处理时间为53.933sec
再论Java虚拟机XMS与XMX设置_第2张图片
  GC停顿时间
  最长GC停顿时间达到1.4sec
再论Java虚拟机XMS与XMX设置_第3张图片
  JVM使用百分比
  JVM使用在57%左右,最高到850M
   1.3.2 -Xms=256M  -Xmx 512M
  在采用JVM 堆大小-Xms=256M  -Xmx 512M,并发会话数为100情况下:
再论Java虚拟机XMS与XMX设置_第4张图片
关键事务性能
  关键事务平均处理时间为10.420sec
再论Java虚拟机XMS与XMX设置_第5张图片
  GC停顿时间
  最长GC停顿时间为0.625sec
再论Java虚拟机XMS与XMX设置_第6张图片
  JVM使用百分比
  JVM使用在65%左右,最高到324M。
   1.3.3 结论
  综上,我们可以发现当采用-Xms=256M  -Xmx 512M,系统性能约提高了4倍,原因在于系统用于GC的停顿时间为原来的一半,这也大大减少了CPU使用。同时内存的利用效率也获得了比较大的提高,在选择较大的内存时,会显著提高每次Full GC的时间。这带来的大量的CPU开销,对于对实时性要求较高的事务更意味着性能灾难。
  所有JVM设置及调优都围绕着2个方面:减少GC次数与停顿时间,但是2者本身就存在着根本的矛盾,具体取舍要按照不同的业务类型,在本例中,银行的取款等交易属于很短的、实时性要求高的交易,故最终的调优在减少停顿时间方面做了倾斜。
  通过第3方监控软件(如HP SiteScope\Diagnostics)可以对事务的性能,GC停顿时间以及JVM内存使用的分析,可以帮助我们获得最优的JVM调优,帮助客户选择最优的JVM设置。

你可能感兴趣的:(再论Java虚拟机XMS与XMX设置)