当前位置: 首页 > 工具软件 > jvms > 使用案例 >

JVMs across data center and twitter's jdk

边翔宇
2023-12-01

第十届国际软件开发者大会(2016年11月7日-11月11日)在旧金山召开,昨天(11月7日)首日会上,来自Twitter JVM组的John Coomes(团队成员,两个孩子的父亲,昨天Twitter发文说参加大会同时也拿到了旧金山地区的超速罚单)介绍了团队基于OpenJDK的一个分支设立了自己的小组,并介绍了在此基础上所做的开发、上线、维护公司内部JDK版本的具体情况。

Twitter JDK一般情况下每个月推出一个版本,但是也有个别紧急的情况会有短周期的开发上线情况,目前该JDK支持OSX(OS X是苹果公司为Mac系列产品开发的专属操作系统,OS X是全世界第一个基于FreeBSD系统采用“面向对象操作系统”的全面的操作系统)和Linux。Coomes介绍Twitter试图保持与OpenJDK之间有的放矢的差异点的情况,和Oracle公司针对它们的JDK与OpenJDK之间的情况是比较相似的。现场有人提问Coomes关于合并OpenJDK最新上线功能和代码的情况,Coomes介绍Twitter的态度是首先分析上线的功能是否Twitter需要,即不盲目地跟随,不会为了维护和OpenJDK基线版本的紧耦合关系而毫无目的地合并代码。

Coomes介绍了Twitter JDK的新功能包括扩展堆分析、异步GC日志、一个叫做dubbed Contrail的二进制日志框架、针对G1收集器的中间年代设计、额外的接口以及命令行选项、性能提升以及缺陷修复。Coomes承诺一旦时机成熟,Twitter会开源这些修改代码。

Coomes介绍了一些JVM现存的实际问题,特别提到了长时间的GC停顿(每一款GC都有这个问题,虽然都有所改进,但是一直没有完全解决)以及在OpenJDK上面如何管理长时间停顿的一些办法。一个方法是隔离输入/输出强度、延迟加载比较敏感的作业。这个听起来好像没什么意思,但是你要想想有上千个Twitter的服务使用Scala和Java,两者都需要运行在JVM上面,JVM的输入/输出操作可以在安全点阶段被关闭,但是这样会造成对于JVM监控的能力下降。Coomes提到了基于Python的服务对于基于JVM的语言没有太大的帮助,推测Twitter内部基于JVM的服务数量只会不断上涨。Twitter JDK通过部署异步GC日志和jvmstat工具,处理了一些棘手的问题,这样的结果导致GC暂停阶段不会阻塞I/O。Commes还提到了未来Contrail工具(一个异步GC日志工具,它基于JIT编译器,实时运行并且具有堆栈跟踪能力)的上线节奏。Twitter JVM优化措施还包括实施了贝叶斯优化器,这是一个从机器学习领域借鉴过来的技术,这样JVM可以迭代地、高效地学习成本函数噪音,导致更快地发现优化处理路径。

关于什么参数有利于Twitter JDK对应的VM,Coomes提到在TwitterJVM内部大约有30个不停的参数,需要我们科学地去选择解决优化。被用来测算JVM性能的成本函数是一个每秒请求数量,这个每秒请求数量基于耗费在GC上的时钟时间。Twitter在Staging环境上让自己新的VM在全部30个参数运行情况下循环地运行了70次,生成的报告显示性能提升了182%。未来的工作需要高强度的测试或者产品红线控制,更长时间的实验周期、基于Mesos的并发实现,并且希望能够具有在较早阶段自动检测和终止差性能实现的能力。

 类似资料:

相关阅读

相关文章

相关问答