线上集群目前使用的hadoop版本是CDH4.3.0,已经发生过两次jt的oom异常了,严重影响了线上作业的运行。刚开始的时候,通过减小retirejob的cacheSize和interval来减小jt的堆内存占用,起到了一定的效果,但其实也就是延长了jt宕掉的时间,感觉应该是jt本身垃圾回收存在一些问题。

    使用ganglia对jt也进行了监控,大体可以看出堆内存还是逐渐在上涨的,每次回收的并不彻底

    wKioL1O5-SzCZaw9AAEVcK769gw626.jpg

    后续使用jmap将jt堆内存dump下来,做内存分析

    wKiom1O59iaAGspqAAPKDhLcRis658.jpg    dump了几次,FileSystem$Cache部分一直上涨,Google了下也没有太好的解决办法,于是自己写了个脚本在没有作业运行的时候定时重启jt,这样起码保证了作业不会因为jt宕掉而得不到运行。