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

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



一,问题描述


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








       




目录
相关文章
|
3月前
|
算法 Java
太狠了!阿里技术专家撰写的电子版JVM&G1 GC实战,颠覆了传统认知
JVM是Java语言可以跨平台、保持高发展的根本,没有了 JVM, Java语言将失去运行环境。针对 Java 程序的性能优化一定不可能避免针对JVM 的调优,随着 JVM 的不断发展,我们的应对措施也在不断地跟随、变化,内存的使用逐渐变得越来越复杂。所有高级语言都需要垃圾回收机制的保护,所以 GC 就是这么重要。
|
3月前
|
算法 Java
JVM GC和常见垃圾回收算法
JVM GC和常见垃圾回收算法
48 0
|
1月前
|
监控 Java 索引
cpu使用率过高和jvm old占用过高排查过程
cpu使用率过高和jvm old占用过高排查过程
37 2
|
3月前
|
缓存 监控 算法
jvm性能调优实战 - 39一次大促导致的内存泄漏和Full GC优化
jvm性能调优实战 - 39一次大促导致的内存泄漏和Full GC优化
71 0
|
3月前
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
52 0
|
2月前
|
算法 Java
深入理解JVM - 解读GC日志
深入理解JVM - 解读GC日志
52 0
|
3月前
|
算法 Java
JVM GC 垃圾回收
【1月更文挑战第3天】JVM GC 垃圾回收
|
3月前
|
存储 算法 Java
JVM GC 算法
对于JVM的垃圾收集(GC),这是一个作为Java开发者必须了解的内容,那么,我们需要去了解哪些内容呢,其实,GC主要是解决下面的三个问题: 哪些内存需要回收? 什么时候回收? 如何回收? 回答了这三个问题,也就对于GC算法的原理有了最基本的了解。
|
3月前
|
算法 Java
jvm性能调优实战 - 41JVM运行原理和GC原理Review
jvm性能调优实战 - 41JVM运行原理和GC原理Review
36 0
|
3月前
|
存储 缓存 算法
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
61 0
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?