前言
填别人留下来的坑其实挺无奈的,会被搞的特别烦,特别是我这种要填三四个人留下来的坑的时候,满满的都是无奈。
幸好的是填坑也可以选择一种更能提升自己的方式来填。
这次遇到的一个程序,是一个从kafka消费并且插入mysql的程序,该程序历经三人之手,频频出问题,一直没有被解决。传到现在,症状是这样的:该程序跑个两三天后会莫名其妙的停止消费,不再插入数据了,据说也不报错,进程还在,反正就是不干活了。
分析过程
等了一天半,这个程序不出意料的出问题了,状况依然是停止消费,不再插入数据。我不太清楚之前的人是怎么排查的,暂时按照我自己的方式来摸索。
首先看一下jvm内存的分布情况,一下子就看到点子上了。old区和perm区基本上都满了,然后可以观察到每隔几秒钟就会进行一次full gc。这样的话,整个程序不是一直都在full gc了,哪还有心情干别的活?
抓紧时间看一下程序的报错,非常明显的OOM问题,不晓得之前的童鞋找到这没。
按理说看到程序出错了就该赶快补数据了,但是为了抓住错误的本质,我只能顶住一些压力,缓半个小时再说,抓紧时间看一下各个指标。