java进程hang住的case

记录一个linux内核bug导致的jvm hang住的问题:

最近厂内新上了一批机器,发现在这批机器上有java进程hang住的问题出现,发生问题时jvm会一直卡在minorGC阶段,Eden区一直保持100%并且进程僵尸(有同学反映其它机器也有Survivor一直100% hang住的情况):


进程hang住后,无法用jstack dump栈信息,执行jstack -F后进程恢复服务,minorGC结束。可以看到整个hang住的过程持续了六万多秒:


jstack -F dump出来的栈信息所有应用线程都处于BLOCKED状态,没有死锁。当时其实应该用jstack -F -m命令将native线程的栈也dump出来才方便定位jvm层面的问题,jstack -F只能dump出java线程的栈。

开始怀疑是hotspot jvm的bug,在Oracle官网找了很久没有找到类似情况。

后来京东的一位同学说这种情况可能是centos内核bug导致,并且发给了我这篇文章:
Red Hat Linux严重Bug将影响基于Haswell架构的服务器

文章原始出处来自于Azul的CTO发表的文章:
https://groups.google.com/forum/#!topic/mechanical-sympathy/QbmpZxp6C64

文章中也提到了受到影响的linux版本:


我们的版本确实属于以上的版本,所以解决方法就是打了个升级patch,将内核升级。升级后服务没有再发生以上问题。

猜你喜欢

转载自blueswind8306.iteye.com/blog/2244266