GreenTeaJUG活动 第21期 北京 [帮转]甲骨文Java云开发者活动

时间:2015-11-13
地点:北京
组织:@JianhaoMo

帮转甲骨文Java云开发者活动 请点击官方链接,注册报名

分会场:开发者日-应用开发云

会议日程

14:20-15:05
Java SE 云服务: 在云中运行任意 Java 应用

15:05-15:50
如何使用 Java 云服务在 云中进行 Java EE 测试

15:50-16:00
茶歇

16:00-16:45
使用“Software-in-Silicon”云, 开发高缩放性、高性能、安全的应用

16:45-17:30
使用移动服务打造 更具吸引力的移动应用

GreenTeaJUG活动 第20期 杭州

时间:2015-10-18
地点:杭州文一西路969号阿里巴巴西溪园区1-2-7曼陀山庄
组织:@JianhaoMo

主题:Understanding Java Garbage Collection
讲师:Gil Tene,Azul 联合创始人,副总裁,CTO,从95年开始基于Java技术做产品,浸淫虚拟机技术20年。其载有C4 GC算法的Zing JVM能处理TB级别的Java堆而不用担心停顿。Gil 也是Azul的JCP执行委员会的代表。

主题:Java调试那点事
介绍Java调试体系JPDA、 JVMTI、JDWP、JDI等技术,并附有实例源码。
讲师:邱小侠(@肥侠xx),阿里集团客户体验事业群 高级技术专家

报名

活动报名请按照如下格式发邮件到event@greenteajug.cn
主题:GreenTeaJUG活动 第20期 杭州
姓名:XXX
手机号码:xxxxxxxxxxx (需接收入园短信,请确保正确)
邮箱:xxxx@xxx.xxx
公司:xxxx有限公司
职位:xx工程师
Java使用年限:x年

GreenTeaJUG活动 第19期 安利一下近三年的JVM Language Summit

时间:2015-08-13
地点:网络
组织:@JianhaoMo

JVM Language Summit 2015刚开完。

搞这个活动就是觉得关注JVM Language Summit的人太少,主动安利一下。

近三年的链接如下:

JVM Language Summit 2015

JVM Language Summit 2014

JVM Language Summit 2013

GreenTeaJUG活动 第18期 Adopt OpenJDK 翻译计划

时间:2015-08-02
地点:网络
组织:@JianhaoMo

转载自并发编程网 – ifeve.com

并发编程网同GreenTeaJUG和Adopt openjdk官方达成合作,组织翻译Adopt OpenJDK的中文版,翻译完成后会从官网链接到中文版,有兴趣的同学可以在翻译计划评论领取任务进行翻译,请尽量在领取后2天内完成翻译。目前已经翻译了第三、四、八章。

GreenTeaJUG活动 第17期 GreenTeaJUG特别奖(一万元现金)

时间:2015-07-19
地点:网络
组织:@JianhaoMo

GreenTeaJUG特别奖

获奖人:孙宇 (阿里花名:洪熙,@洪熙

获奖理由:从零开始,默默坚持五年,专注Hotspot JVM GC代码。

奖金:人民币一万元现金

奖金赞助来源:莫简豪个人

GreenTeaJUG活动 第15期 上海 ShanghaiJUG NanjingJUG合办Java20周年

时间:2015-05-24
地点:上海长宁区中山西路1279弄6号 国峰科技大厦1楼
组织:@JianhaoMo

主题:Java需要你!/Java Needs You!
讲师:Ben Evans from London JUG,jClarity的联合创始人。其公司致力于开发可以为开发和运维团队提供帮助的性能工具和服务。他是LJC(伦敦的Java用户组)的组织者之一,也是JCP执行委员会的成员之一,帮助定义Java生态系统中的一些标准。他还是“Java Champion”荣誉得主。他曾与人合著过《The Well-Grounded Java Developer》(中文版是《Java程序员修炼之道》)和《Java in a Nutshell》(第6版)。他曾就Java平台、性能、并发和相关主题发表过多次演讲。

主题:系统的重构/The refactoring of system
讲师:吴璞渊,毕业于江苏大学数学专业,先后就职于大唐软件、西门子、IBM。参与翻译《Java虚拟机规范1.7》,熟悉IBM虚拟机J9。现就职于阿里巴巴商家业务部

主题:Java内存模型的历史变迁
讲师:程晓明,Java软件工程师,专注于并发与NIO,《深入理解java内存模型》作者,InfoQ知名作者。

主题:Java调试:从桌面到云端/Java debugging: from desktop to cloud
讲师:陆传胜(@Jonathan陆),来自蚂蚁金服基础技术部JVM组的开发者,毕业于南京大学,曾参与IBMJDK 6~9,OpenJDK 8~9的开发和维护工作,爱好看书和烹饪。

主题:圆桌论坛
讲师:Ben Evans,JUG Leader

AliJVM实践

作者:莫简豪(花名:坤谷)@JianhaoMo

很多人已经知道,阿里广泛使用Java技术。由于阿里对Java使用的广泛和深入,以至于阿里开始了自己的JVM实践。业界中Twitter也有JVM的定制优化实践,但细节不太了解。2010年开始,阿里核心系统部专用计算组基于OpenJDK6 Hotspot JVM定制优化自己的JVM,经过几次双11的考验。2013年开始,改为基于OpenJDK7,并改名为阿里JVM。

文章出处:http://greenteajug.cn/?p=1

作者:莫简豪(花名:坤谷)@JianhaoMo

touxiang

很多人已经知道,阿里广泛使用Java技术。由于阿里对Java使用的广泛和深入,以至于阿里开始了自己的JVM实践。业界中Twitter也有JVM的定制优化实践,但细节不太了解。2010年开始,阿里核心系统部专用计算组基于OpenJDK6 Hotspot JVM定制优化自己的JVM,经过几次双11的考验。2013年开始,改为基于OpenJDK7,并改名为阿里JVM。

JVM简介

JVM,Java虚拟机,是执行Java字节码的虚拟机。有关JVM、Java运行环境JRE和Java开发包JDK的关系可以参考这个页面(http://docs.oracle.com/javase/7/docs/)的图片,很直观。粗粗地说,Hotspot JVM解释运行Java字节码。解释运行的同时发现热点,JIT编译器将热点编译为机器码,这是在现代JVM上运行Java,性能并不差的原因。另外JVM的另一显著的功能是自动垃圾回收,GC。示意图如下:

alijvm

注意到图中还有GCIH,intrinsic,JFR,这些将在下面阿里JVM中提到。

定制优化解决的问题

官方JVM是一个通用产品,一大目标是尽可能的兼容各个平台和满足大部分应用场景的需求。由于开发和维护资源有限,对于特定平台和应用场景而言,官方JVM在性能和功能上,都有取舍。而在阿里,所使用的平台是统一的x86平台,应用也有自己的场景特点。针对平台和应用场景的极致的优化,可以做得更多。另一方面,由于阿里的规模大,单机上每一点点进步,乘以规模,其效益都会被放大。所以值得投入资源来定制优化自己的JVM。上图中,阴影的部分就是阿里JVM定制优化的地方。

最新亮点

AliJVM7最新版本主要有两大更新——协程和MSC并行化。

协程的支持主要是为了解决同步IO的性能问题,在底层将IO异步化。这样Java应用既可以享受同步IO代码的良好的可读性和可维护性,还能体验到性能的大幅提升!在阿里内部中间件性能大赛中使用协程的效果如下,比kilimi库性能更好。

xiecheng

MSC的并行化是为了解决应用Full GC停机时间较长的问题。官方JDK的Full GC实现是单线程的,将其并行化能够缩短停机时间,从而达到提升应用性能的目的。测试结果如下。

msc

性能优化

首先,针对Intel X86 CPU进行JVM本身的编译优化,生成性能更高的可执行代码。即图中左边静态部分。右边动态生成部分的机器码的性能和JVM本身的编译无关,所以执行性能没有影响。可以看到静态部分中,GC是一个重要的模块。举例,编译优化后young gc性能有约20%的提高。

 

以上是不修改源码得到的性能提升,当然也有修改源码的。例如:

x86_64平台下JNI native wrapper的分支整理优化;

去除Linux下无用的DTrace的钩子函数;

优化了GC的一些细节,包括并发的逻辑,卡表的逻辑。

 

为了获得更大的性能提升,阿里JVM还提供了针对特定需求的intrinsic,增加了:

CRC32、CRC32C;

byte数组比较、char数组比较;

ASCII转UTF8;

SpinLock pause

的Intrinsic方法。

这些优化大多利用了X86的SIMD指令。使用这些新的API,虽然需要应用改代码,但是带来的局部性能提升非常大。选择这些优化点,是对应用进行性能剖析得出来的。

故障排查

阿里JVM积累一些故障排查经验,并在JVM中做了优化。包括:

修复一些BUG、如GC、socket连接泄漏,并提交给社区。

在crash log里输出反汇编信息,用于帮助调查crash问题。

添加ArrayAllocationWarningSize参数,当应用申请超大数组,会打印警告,这个功能帮助排查了一些诡异的应用问题,很实用。

添加单独指定新建Java线程的栈大小的API。有些典型应用,由于某线程递归深度比较深栈溢出。调线程栈参数是全局的,对于大部分线程是浪费内存,单独指定可以解决。

添加PrintGCReason参数;将PrintJNIGCStalls、DisableExplicitGC与ExplicitGCInvokesConcurrent参数改为manageable用于帮助排查、解决GC问题。

添加forceGC()与forceCompactionGC()的API,可以来缓解CMS GC碎片化的问题,应用可以选择在没有业务请求的时间段自主触发Full GC。

使用jemalloc替代glibc的ptmalloc,解决ptmalloc物理内存不释放的bug。增加参数ReclaimMostNativeMemory以最大限度释放物理内存,当direct memory使用量达到一定值时输出预警信息并进行CMS GC,根据调用栈统计direct memory申请分布情况。

Java异常统计,对应用无侵入地统计所有异常个数以及发生次数最多的异常,用以协助诊断CPU热点,比如有应用频繁抛异常同时自己catch作为逻辑判断,对性能有较大影响。

将参数OmitStackTraceInFastThrow设为managable,如果想要排查的异常没有StackTrace,可以动态调整这个参数。

还有一个重大的定制,是加入了对Flight recorder的支持。Flight recorder源自于JRockit JVM,是一个高性能的基于事件的记录器,它可以记录下应用运行过程中JVM发生的各种行为,对于应用的问题诊断有着很大的帮助。OpenJDK Hotspot中只有Flight recorder的一些埋点,没有完整实现。阿里JVM基于OpenJDK Hotspot实现了自己的Flight recorder,即图中JFR部分。记录的事件包括:GC、线程同步、JIT、类加载和VMOperation。

对于Flight recorder的问题诊断功能,可以通过阿里内部JVM故障排查系统进行使用。同时JVM故障排查系统还提供了GC、线程dump、Crash 等日志的分析诊断功能。

最后,阿里JVM提供了一个JIT符号信息的接口,结合阿里的系统级性能剖析系统(ASWP),和阿里监控平台,可以在线对线上应用低开销地进行系统级性能剖析和监控。

解决特定应用痛点

特定应用有GC相关痛点,我们针对这种应用,开发了GC Invisible Heap,GC不可见堆,即图中GCIH部分。有应用有在同一机器多JVM之间共享对象的需求,有的应用有将超大文件,映射到对象的需求。业界有个Off Heap的概念,都是JVM之上的实现,基本上避免不了序列化和反序列化。GCIH修改了JVM,直接映射Java对象,没有序列化开销。解决也应用的痛点。目前共享对象应用已经在线上稳定运行多时,超大堆压缩功能正在研发。

故障发现排查服务化

阿里JVM的实践,除了性能优化,和定制化。很大的投入是在故障排查方面。而故障排查很多时候还需要人工经验,把之前积累的经验,做成服务化系统。一方面解放阿里JVM团队,去做更多研发工作,另一方面也为将来服务更多的客户,打好基础。如下图:

jtc

crash

GreenTeaJUG活动 第12期 台北 TaiwanJUG合办

时间:2014-11-16
地点:台北
组织:@JianhaoMo

GreenTeaJUG参与TaiwanJUG的主题

主题:阿里JVM之路
阿里是一个重度使用Java的公司,这样就驱使着公司走在实践JVM的路上。我们主要关注三点:性能优化、故障排查与回馈社区。性能优化方面,针对特定应 用需求在JVM内增加了一些intrinsic方法,例如CRC32、CRC32C、byte/char数组比较,ASCII与UTF8相互转换等,对于 GC,我们给出了一个创新的Off-Heap方案;在故障排查方面,增加ArrayAllocationWarningSize、 PrintGCReason、ReclaimMostNativeMemory等参数,辅助排查问题;在回馈社区方面,我们发现GC、socket连接泄 漏等bug,问题解决后,将patch回馈到了社区。
讲师:费辉@ferhui,资深开发工程师,就职于阿里巴巴集团-阿里云事业部-核心系统研发部,2004~2008 本科就读于中国科学技术大学;2008~2011 硕士就读于中国科学院软件研究所,研究方向为并行计算;2011年7月加入阿里巴巴-核心系统研发部-专用计算组,从事JVM优化相关工作,针对公司应用的特点,定制化JVM。例如结合JVM,对hadoop namenode中rpc进行优化等等。近期从事系统级profiling的工作,包括但不限于java应用,目标低开销、稳定地运行在服务器上,能够给出开发者函数级的优化建议,异或是当应用出问题的时候,能够提供有力的性能数据帮助问题排查。项目网站:http://jvm.taobao.org

主题:Java常见问题排查方法
每个软件在运行时不可避免的会出现各种各样的故障,严重的故障会使得用户对网站的信任度下降,甚至产生严重的社会影响和经济损失,故障的排查和解决过程就像是一场争分夺秒的战争,排查的技巧和经验在这个时候特别的重要。淘宝网是上千个应用组成的网站,主要由Java编写而成,出现过的故障种类非常的多,从而积累了不少排查问题的方法。这次分享涵盖以下常见的几种Java问题的排查方法:(1). 类加载问题;(2). 内存OOM问题;(3). CPU消耗高问题;(4). Java Crash问题;(5). 分布式调用超时问题
讲师:林昊(bluedavy_readonly),林昊因故没能出席,由费辉代讲ppt。林昊  网络ID: bluedavy,资深技术专家,目前就职于阿里巴巴集团—技术保障部。2007年底加入淘宝,2008-2010年负责淘宝服务框架的设计与实现,此服务框架是淘宝3.0架构体系中的重要组件,在淘宝大范围使用,2011年每天承载的服务请求量为300亿+;2009年与同事共同出版《OSGi原理与最佳实践》一书,2010年出版《分布式Java应用:基础与实践》一书;2011年负责HBase在淘宝的落地,目前HBase在阿里的各家公司使用广泛,为海量数据读写的业务提供了支持;2011年下半年至今主导T4产品(基于LXC),目标为大幅度的降低淘宝的运维成本;2013年转为运维,着力关注运维领域,主要涉及的为可维护性、稳定性、性能、成本、软硬件结合,并根据发展需要推动系统结构演变。个人网站:http://hellojava.info

GreenTeaJUG活动 第11期 杭州

时间:2014-09-23,2014-09-24
地点:杭州文一西路969号阿里巴巴西溪园区1-2-7 曼陀山庄
组织:@JianhaoMo

主题:HotCode2,Java热部署技术
讲师:千臂

主题:Truffle and Graal: Building fast interpreters on top of the JVM
I will present how to build interpreters using the Truffle framework. Existing virtual machines usually have the JIT compiler deeply integrated into the virtual machine and the run-time. The Java Truffle framework and Graal compiler, however, separate this two concerns: A language implementer writes an Abstract Syntax Tree (AST) interpreter using Truffle. Upon execution, the framework will let Graal compile its hot execution paths by assuming the structure of the AST interpreter and performing related optimizations. The result is fast code, portability over platforms, and language interoperability.
讲师:曼努

主题:延续(continuation),及其在编译器优化中的应用
内容大致包括;
1.continuaiton与CPS(continuation passing style)的介绍。
2.函数式语言编译器的常用中间表示(IR)。
3.简单示例:如何在解释器中使用CPS实现尾递归优化(TCO)。
4.扩展:如何应对更加复杂的情况。
讲师:@善良的右席

GreenTeaJUG活动 第10期 杭州

时间:2014-05-10
地点:杭州黄龙时代广场(支付宝) 应天书院(14F)
组织:@魔女亲青-Rachel

主题:HSF2.0性能优化及新功能
HSF 服务框架新版本的功能改造和性能的优化; HSF2.0在功能上兼容了DUbbo协议和使用方式,此外,tps由之前的5w提升到13w,介绍优化的一些思路.
讲师:吕仁琦,2007 年毕业于浙江大学软件专业,在道富(杭州)和微策略(杭州)分别工作三年和一年,做金融和通信相关的开发工作;11年加入淘宝中间件,曾参与过中间件 configserver改造,服务治理等工作,在开发web和分布式中间件上有些技术积累。现在再阿里巴巴中间件团队负责服务框架。

主题:Java 8: Create The Future
With nine million developers across the globe, Java is the most popular development platform in the world today. With the launch of Java 8 powerful new features will be added across the entire platform: language syntax, class libraries and virtual machine.This session will explain what the main new features are and how they benefit developers. We’ll start with Java SE 8, explaining the basics of Lambda expressions, streams and functions as well as things like the expanded use of annotations, the new date and time API and extension methods. Next we’ll look at Java ME 8 and how new profiles and APIs are targeted at the rapidly expanding Internet of Things development. Finally we’ll take a look at how NetBeans 8 supports all the features discussed in the rest of the presentation and makes developer’s lives easier.
讲师:Simon Ritter, manages the Java Technology Evangelist team at Oracle Corporation. Simon has been in the IT business since 1984 and holds a Bachelor of Science degree in Physics from Brunel University in the U.K. Originally working in the area of UNIX development for AT&T UNIX System Labs and then Novell, Simon moved to Sun in 1996. At this time he started working with Java technology and has spent time working both in Java development and consultancy. Having moved to Oracle as part of the Sun acquisition he now focuses on the core Java platform, Java for client applications and embedded Java. He also continues to develop demonstrations that push the boundaries of Java for applications like gestural interfaces, embedded robot controllers and in-car systems.Follow him on Twitter, @speakjava, and his blog at blogs.oracle.com/speakjava.

主题:ali-tomcat
Ali- tomcat 是阿里巴巴根据自身情况基于apache-tomcat订制的应用容器,增加了模块化特性,代理了所有的日志框架底层实现,实现了更好的监 控和诊断功能,在运维层面也更方便推动一些全网通用的模块(如中间件产品)自动升级。在面向开发人员方面ali-tomcat正在提供更好用的插件,支持 热部署特性。
讲师:王宏江(@hongjiang_wang),博客,2003年毕业于中南大学化学系,有十年以上的工作经验,09年加入阿里,曾参与1688、来往等网站业务方面的开发,有丰富的后端架构经验,现在阿里巴巴中间件团队负责应用容器。对函数式编程兴趣浓厚,scala布道者.

主题:自由讨论及JCP标准化讨论
讲师:莫简豪(@JianhaoMo