[关闭]
@xuemingdeng 2016-11-15T22:15:40.000000Z 字数 1244 阅读 533

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

摘要:

在2016旧金山QConf大会的解决方案进展情况报告会上,Twitter为我们呈现了一个演讲。演讲里提到了横跨数据中心的JVM和由Twitter内部开发维护的一个OpenJDK分支版本,也就是Twitter-JDK。Twtter极有可能把这个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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注