横跨数据中心的JVM和Twitter的JDK

简介:

在2016旧金山QConf大会的解决方案进展情况报告会上,Twitter为我们呈现了一些演讲。昨天,Twitter的JVM团队对外公布他们正在开发、发布和维护一个JDK分支版本。这个JDK是OpenJDK的分支,在Twitter内部发行,目前可以支持OSX和Linux,每个月发布一次,如果有紧急版本会缩短发布时间。来自Twitter的John Coomes告诉我们,在如何对OpenJDK的特性进行趋异演化方面,Twitter所做的跟Oracle-JDK有些类似。当被问及Twitter是如何决定对上游OpenJDK的变更进行合并时,Coomes回答说,这个取决于要发布的特性,况且他们并不打算维护一个跟OpenJDK主干分支紧密耦合的版本。

Twitter-JDK带来一些新的特性,比如经过扩展的堆内存分析、异步垃圾回收日志、二进制日志框架Contrail、中间代G1、更丰富的API和命令行参数、性能改进以及缺陷修复。Twitter-JDK的一些改进特性也会被上游的OpenJDK所采用。

Coomes提到了在OpenJDK的JVM里存在的一些问题,特别是GC的长时间停顿问题。一种改进的措施是把I/O密集和对延迟敏感的任务分开执行。不过Twitter有成千上万个运行在JVM上的服务,对它们进行分离是个很枯燥的工作。我们可以在达到安全点时关闭JVM的I/O,不过这样会降低对JVM的监控能力。随着基于Python的服务逐渐向基于JVM的服务迁移,Twitter的JVM服务数量只增不减。Twitter正在通过实现异步GC日志和jvmstat来解决这些挑战所带来的问题。这样,GC停顿就不会再阻塞I/O。Coomes说之后将会发布Contrail,Contrail包含了一个JIT编译器和运行时,支持堆栈跟踪,可以作为实现异步GC日志的支持框架。Twitter-JDK实现了贝叶斯优化算法,这个技术借鉴自机器学习,让JVM可以持续高效地学习模糊成本函数,可以更快地找到更优的处理路径。

被问及Twitter-JDK的VM调优参数时,Coomes说大概有30个参数可以用来对VM进行调优。用来衡量VM性能的成本函数就是指在GC期间每秒可以处理的请求数。Twitter在测试环境使用这30个参数对新VM进行了70轮GC测试,结果在性能上有182%的提升。未来的工作将包括对VM进行压力测试或极限测试、更长的试验期、基于Mesos的并发试验以及及早探测并结束无效试验的能力。

查看英文原文:JVMs Across the Data Center and Twitter's JDK

本文转自d1net(转载)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4天前
|
Java 开发工具
JDK、JRE、JVM三者之间的关系
JDK、JRE、JVM三者之间的关系
63 0
JDK、JRE、JVM三者之间的关系
|
4天前
|
安全 前端开发 Java
JDK源码级别彻底剖析JVM类加载机制
JDK源码级别彻底剖析JVM类加载机制
|
4天前
|
Java 编译器 测试技术
滚雪球学Java(03):你知道JDK、JRE和JVM的不同吗?看这里就够了!
【2月更文挑战第12天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!
111 4
|
4天前
|
Oracle Java 编译器
基本概念【入门、 发展简史、核心优势、各版本的含义、特性和优势、JVM、JRE 和 JDK 】(二)-全面详解(学习总结---从入门到深化)
基本概念【入门、 发展简史、核心优势、各版本的含义、特性和优势、JVM、JRE 和 JDK 】(二)-全面详解(学习总结---从入门到深化)
48 1
|
4天前
|
Java 编译器 对象存储
java一分钟之Java入门:认识JDK与JVM
【5月更文挑战第7天】本文介绍了Java编程的基础——JDK和JVM。JDK是包含编译器、运行时环境、类库等的开发工具包,而JVM是Java平台的核心,负责执行字节码并实现跨平台运行。常见问题包括版本不匹配、环境变量配置错误、内存溢出和线程死锁。解决办法包括选择合适JDK版本、正确配置环境变量、调整JVM内存参数和避免线程死锁。通过代码示例展示了JVM内存管理和基本Java程序结构,帮助初学者更好地理解JDK和JVM在Java编程中的作用。
22 0
|
4天前
|
小程序 Java 程序员
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
29 0
|
4天前
|
存储 监控 Oracle
简单介绍JDK、JRE、JVM三者区别
1995年Sun公司在SunWorld大会上发布了Java1.0版本,并提出可那个响彻云霄的“一次运行,随处编译”的口号,这句话充分的展示出了Java的跨平台特性,提到跨平台,便衍生出了我们今天需要讨论的话题,JDK、JRE、JVM三者的区别
21 2
|
4天前
|
监控 前端开发 安全
JVM工作原理与实战(十四):JDK9及之后的类加载器
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了JDK8及之前的类加载器、JDK9及之后的类加载器等内容。
27 2
|
4天前
|
存储 安全 Java
JDK、JRE 和 JVM 的区别和联系
JDK、JRE 和 JVM 的区别和联系
131 0
|
4天前
|
Java 编译器 API
JDK、JRE、JVM的特点和关联
JDK、JRE、JVM的特点和关联