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情况下:

wKioL1OZNdXiI8Q-AAddG29_JqY237.jpg

关键事务性能

关键事务平均处理时间为53.933sec

wKioL1OZOKejaZ6JAAT0PXjFK8E015.jpg

GC停顿时间

最长GC停顿时间达到1.4sec

 wKioL1OZOQLBkyOLAAYlayQyf7A957.jpg

JVM使用百分比

JVM使用在57%左右,最高到850M

1.3.2    -Xms=256M  -Xmx 512M

在采用JVM 堆大小-Xms=256M  -Xmx 512M,并发会话数为100情况下:

wKioL1OZOV2jmL4bAAc_7fqQ6vg217.jpg

关键事务性能

关键事务平均处理时间为10.420sec

wKioL1OZOanxxvplAAcXp9ejkLM050.jpg

GC停顿时间

最长GC停顿时间为0.625sec 

wKiom1OZOjSgIKfOAAfApaFPvwA985.jpg

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设置。