您的位置:首页 > 其它

JVM FULL GC太频繁,CPU占用率过高问题

2017-09-11 23:22 686 查看

一,问题描述

       今天上午时候,kafka的一个topic涌上来超过平常值的一堆数据,消费客户端就开始出现了几个明显的问题:       1,首先是ZK连接超时       2,CPU飙升到400%       3,观察程序GC,发现老年代,S0,Eden这三个,100%;       4,线程数目太多

二,问题分析

         在从kafka获取到数据之后,我使用了一个可回收线程池来进行存入hbase的操作,可回收线程池在使用时候,如果线程不够用,就会继续去创建线程,导致最后观察的时候,发现这个进程有2000多个线程在跑,线程之间的切换,是很耗费性能的,所以带来的CPU飙升,后来使用了固定大小的线程池,多开几个客户端取消费的方式,发现CPU降低下去了;随之下去的是GC情况,观察了几个钟头,始终没有发现FULL GC的情况。另外,在使用Kafka去拉取数据的时候,每次拉取完,使用Thread.sleep 0的方式,暂时让出CPU,不让这个获取数据的线程长期占用时间片;程序正常跑了之后,又回头想了想ZK连接超时的问题,感觉可能是FULL GC太频繁,每次都需要耗费很长的时间,导致了连接超时的问题;

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: