qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

再论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情况下:
  关键事务性能
  关键事务平均处理时间为53.933sec
  GC停顿时间
  最长GC停顿时间达到1.4sec
  JVM使用百分比
  JVM使用在57%左右,最高到850M
  1.3.2 -Xms=256M  -Xmx 512M
  在采用JVM 堆大小-Xms=256M  -Xmx 512M,并发会话数为100情况下:
关键事务性能
  关键事务平均处理时间为10.420sec
  GC停顿时间
  最长GC停顿时间为0.625sec
  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设置。

posted on 2014-06-16 10:20 顺其自然EVO 阅读(708) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2014年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜