京东JDK在大数据平台的探索与研究
对于CDS,JEP中的介绍如下:
京东JDK引入了最新的JDK12中关于CDS的新特性 - Default CDS Archives。该功能在编译阶段生成默认的Archive,并且无需用户指定JVM选项-Xshare:auto即可享受到CDS带来的优点。 (9) 并行的高效JMap Java堆分析工具: JMap作为Java开发人员常用工具,一般在调查OOM,查看堆对象分布时都能发挥重要作用。但是在日常工作中,发现对于大堆,例如堆内存配置为-Xmx200g时,在线上系统运行JMap histo时间非常长,并且影响整个JVM进程的响应速度,一旦JVM进程被KILL,运行中JMap histo也无法提供有效信息。 经过调研,JMap 工具在扫描Java堆时是单线程工作,并且只有在整个堆扫描完成时才会统计信息并输出。 针对JMap的问题,京东JDK团队对JMap进行了拓展,实现了其并行,增量式对扫描方案。对JMap histo在大堆上的扫描并行化,同时在运行中统计中间结果。使得JMap在200GB堆扫描性能提升2倍,同时能够使JMap在运行过程中不断输出中间结果,这样即使JVM进程退出,JMap仍能提供有效的信息用于分析内存使用情况。 2. 京东JDK优化效果 经过一系列的工作,目前京东JDK已经顺利应用于京东大数据平台HDFS的NameNode节点上,其对于管理结点优化达到50%, 见下图: 另一方面,JDJDK对于管理结点文件数承载能力从4亿上升到10亿,承载能力提升1.5倍。缓解了业务方的需求,节省了人力。 针对G1GC 也做了相关优化, 优化后的G1GC 对比之前JDK8的CMS的YoungGC暂停时间如下图: GC发生的次数对于如下: 在加/解锁及线程同步方面,京东JDK团队也进行了深入的研究及优化,除了上文提到的偏向锁以外,还利用JVM 的instrumentation等工具,对锁相关的bytecode进行线上优化,针对不同的HDFS访问,优化效果如下: Mkdir: Delete: Getfileinfo: Rename: 五、京东JDK的发展方向 在未来,京东JDK团队将更加注重于降本增效方面的工作,我们计划进行更多的尝试及创新,例如:
同时,京东JDK团队也将积极参与openJDK社区的开发及研究工作,尽可能将京东JDK的特性贡献到社区,让更多人能够使用到。 作者简介:臧琳,京东JVM专家,主要负责京东JDK针对京东大数据业务的定制化开发及优化工作。专注于JVM中内存管理,runtime运行时以及JIT编译器的性能分析及优化等领域。 【本文来自51CTO专栏作者张开涛的微信公众号(开涛的博客),公众号id: kaitao-1234567】 戳这里,看该作者更多好文 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |