技术开发 频道

专访阿里李三红:性能优化之路苦乐参半

  【IT168 专稿】双十一、双十二、春节抢五福......阿里不断刷新性能上限,这背后免不了一群技术咖的努力!很多人都想探知阿里是如何做的性能监控与优化?支付宝到底可以承受多大的流量峰值?APM未来将会如何发展?踩过的“坑”、遇到的“痛”,一步步走来,阿里性能优化经历了什么?

  【导语】本期访谈对象李三红,阿里巴巴/蚂蚁金服JVM Architect。8月18日的APMCon 2016大会,我见到了李三红老师,第一感觉很谦逊随和。本来担心打不开话匣子的我,在开始之后,完全打消了顾虑。聊起技术和感兴趣的领域,这位技术大咖侃侃而谈,很是尽兴。从Intel到IBM再到阿里巴巴,兴趣让他实现技术转型,坚持让他在这个领域钻的更深。目前他专注于云计算、Java虚拟机及性能调优等技术领域。

专访阿里李三红:性能优化之路苦乐参半
▲李三红

  蚂蚁金服的性能优化之路

  一、Java/JVM性能优化

  Java诞生于90年代末期,到今天为止,Java已经走过了20多个年头,Java之所以可以如此成功,李三红表示有三方面主要原因,首先Garbage Collector(GC)技术,把程序员从以前写C/C++时的内存管理的负担中解放出来;再者,Just in Time(JIT)技术,大幅提升了Java程序运行时性能;最后,Java作为一个Managed Runtime, 提供了非常丰富的方法和手段用来查看运行时的数据,可以动态观测JVM内部的性能数据指标。围绕Java的技术生态系统也非常繁荣和丰富,这也是非常多的公司把Java作为构建他们企业计算的基础技术的原因。蚂蚁金服也不例外地选择了Java,在发展的基础上,蚂蚁金服又是如何通过Java/JVM实现性能优化的呢?

  李三红补充道,想谈性能优化,总得建立在数据的基础上,Java平台在收集数据上做了很多努力,和JDK一起发布的就有很多的工具,用来收集相关故障诊断,性能方面数据,帮助开发人员定位和分析问题,比如:JConsole, VisualVM等工具在运行可以通过JMX连接观测和追踪JVM的各项性能指标。

  李三红总结说,如果从JVM的角度看,遇到大致如下两类性能问题:

  1、GC问题是最常见的问题之一,我们需要根据Workload的特性,选择合适的GC算法。

  另外也需要根据应用的实际情况来配置Heap Size的大小。这里有个误区,Heap Size的配置不是越大越好。

  2、JIT问题。 当你发现你的应用变得诡异的慢时,检查Code Cache是否不够用了。另外,Inlining也是影响JIT的一个重要因素,应用程序可以从这个角度来考虑应用代码的优化。推荐大家一个工具JITWatch, 可以帮助开发者诊断与JIT相关的性能问题。

  二、采用多租户方式

  去年双11,支付宝的交易峰值达到8.59万笔每秒,大屏展现的场景还历历在目,李三红说,随着软件设计的逐渐复杂,面对分布式的计算环境,本来一台机器可以完成的事情,现在需要跨机器完成,这种跨机器通讯带来的额外代价(RPC以及对象的序列化/反序列化),去年阿里做的合并部署就是为了优化这些开销而为的。所谓合并部署就是多个应用以租户的方式运行在同一个Java容器里 。在分布式的情况下,本来A系统调B系统,走的是RPC的方式,如果把A、B部署在一起,就转成了JVM内部调用,这个听起来不错的Idea实战效果如何呢?

  李三红补充道,对运维人员来说,合并部署之前,由于A、B是分开部署的,运维上简单而直接,一台VM就简单对应部署唯一一个应用。而合并起来以后,会对运维人员造成很大困扰,阿里试着从测试、开发,运维整个生命周期解决这个问题,在开发阶段是不同的应用,他们互不影响,但是在运行时,通过一些技术手段,把他们无缝地运行在同一个JVM里。

  三、“系统级“性能监控

  阿里也做一些“系统级别“的APM产品,监控的数据范围涵盖了OS的, JVM的,甚至应用级别的,我们希望通过大数据分析手段,Deep Learning能够做到:事先积极预防,事后快速定位。

  遇到的“痛”—性能瓶颈

  提及性能瓶颈,李三红谈到了目前很火的微服务,其带来的性能方面的成本也是不能忽视的。由于跨节点RPC调用造成额外的网络开销,以及Java对象的序列化/反序列化的代价,虽说通过一些应用上的优化可以在某些场景上降低这些开销,但是随着服务被拆的越来越小,运行上的成本必须通过一些底层技术创新来根本性减少这些额外开销。这算得上阿里一直希望解决的痛点了。

  其次是通过内部Profiling工具,尽早发现问题,把问题扼杀在摇篮里。另外,阿里一直努力的方向就是希望搭建整套APM平台,把OS、JVM这些数据全部整合在一起,比如一个请求进来,它的RT变长了,可以把GC数据也摘取出来,两个数据放在一起做相关性分析,RT拉长时,如果GC停顿时间也非常长,我们可以去分析这个是否是GC停顿导致RT的变坏。

  APM的未来期待

  采访的最后,李三红坦言道,随着软件设计的日趋复杂,越来越分布式,APM随之走红。听云APM目前专注国内市场,产品多样,场景多样,未来的发展很值得关注!同时,未来的APM数据越来越多,数据源越来越多,大数据、人工智能的加入同样值得期待!

2
相关文章