当前位置: 首页 > Java > 正文

某应用在压测时很容易出现promotion failed的现象

1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

解决过程:
1、从promotion failed时的gc日志来看,状况为新生代中有1.5g的对象存活,旧生代此时的空余空间为4g,足以放下新生代存活的这些对象,于是只能猜测可能是cms gc的情况下旧生代的碎片问题导致的,其实心里是不太相信的,因为这空间空闲了如此的多呀;

2、首先增加-XX:+PrintPromotionFailure看看Promotion Failed的时候是不是有很大的对象要晋升到旧生代,结果打出来的日志显示在晋升的时候失败的竟然只是申请262146个block的空间而已,这是在开启了压缩指针的情况,因此每个block为4个字节;

3、还是不能确定,于是增加-XX:+CMSDumpAtPromotionFailure,看看OLD Gen的碎片状况;

4、打出来的信息显示old gen拥有最多free block的chunk也只有99977个而已,有53w+个chunk,里面大部分都只有999个free block,可见碎片相当严重;

5、到这步只是确定了碎片很严重,暂时能想到的只有每天半夜的时候主动执行下jmap -histo:live,尽可能减少碎片吧,如果后续有什么改进的动作,再来记录。

本文固定链接: http://www.chepoo.com/application-pressure-promotion-failed.html | IT技术精华网

某应用在压测时很容易出现promotion failed的现象:等您坐沙发呢!

发表评论