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



一,问题描述


       今天上午时候,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太频繁,每次都需要耗费很长的时间,导致了连接超时的问题;








       




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值