天天看点

性能魔方:大规模企业该如何应对应用性能挑战

在7月7日的云栖techday活动上,来自性能魔方的朱渝苏给大家分享了《大规模企业应用性能管理实践》话题。朱渝苏从应用性能的挑战和应对策略、大型互联网公司的优化实践、性能魔方优化实践与案例三个部分展开了本次分享。分享最后,他对现场观众所提出的问题也做出了精彩的回答。

下面是现场分享观点整理。

很高兴来到云栖小镇,我是来自性能魔方的朱渝苏,之前在帝联、百度有工作过。今天分享的议题是《大规模企业应用性能管理实践》。

 今天的内容分三部分,第一部分是应用性能的挑战和应对策略,第二部分是分享我们在百度的优化实践,第三部分主要介绍性能魔方产品的优化实践与成功案例。

性能魔方:大规模企业该如何应对应用性能挑战

<b>应用性能的挑战和应对策略</b>

性能问题无处不在、时时发生,互联网企业从业人员、资源环境、产品逻辑、用户行为等因素都有可能导致性能问题的发生,比如服务器硬件老化、云环境不稳定、产品和产品逻辑复杂、用户秒杀、大规模推广等都会造成网页无法访问或访问速度减慢,用户体验随之大打折扣。另外,中国的基础网络,在全球来说是较复杂的,南北互通,各个运营商之间多地格局。在pc端比如浏览器效果差、环境干扰,在移动端比如移动网络3g、4g网络信号不好,都会造成性能问题。

性能魔方:大规模企业该如何应对应用性能挑战
性能魔方:大规模企业该如何应对应用性能挑战
性能魔方:大规模企业该如何应对应用性能挑战

我们来看下国际一线互联网公司的应对策略。谷歌、雅虎、facebook、twitter等是性能优化管理方法论的先驱,并成立了独立的优化团队,将性能优化做到极致。在2007年左右,中国的一些互联网公司也关注和加大这块的投入,比如腾讯在2007年左右开始投入大规模的用户体验,百度和阿里在2010年左右也建立了应用性能管理体系。随着互联网的不断发展,2015年左右新浪、美团等都进行了性能优化实践,基本提速20%到50%左右。

性能魔方:大规模企业该如何应对应用性能挑战

那么优化实践是如何开始的呢?互联网产品由pm进行产品设计, 研发rd的同学对产品开发,然后qa同学测试,再由op同学上线系统,与此同时系统部sys的同事对一些基础网络、硬件环境进行维护。运维同学的工作职责是将qa测试交付后的代码最大限度进行优化,然后部署到线上系统,整合出一个大家能够稳定和高效使用的互联网产品。

性能魔方:大规模企业该如何应对应用性能挑战

运维推动优化具有很大优势,当需要做一个优化项目的时候,fe会提供js测速,系统同学会做idc和cdn的建设和优化,开发同学会针对影响性能的模块、接口进行专题分析和改进。op同学作为最核心和最主要的驱动力量,除了会对整个产品负责,对产品应用性能做监测,生成监测报告以外,还需搭建一个监测平台,提供与竞品的分析、速度优化,提出这个评测报告。让fe、sc、rd的同学,都能够参与到性能优化的项目里面。

性能魔方:大规模企业该如何应对应用性能挑战
性能魔方:大规模企业该如何应对应用性能挑战

下面讲运维体系是如何体现性能的。op有很多平台,ct统一调度平台、统一流量接入平台和安全防范平台以及用户体验的真机监测平台等。这张ppt主要讲运维的相关工作,配置管理、资源管理、发布管理、容量管理和监控管理。细节上分为系统规划、idc硬件、预算,管理上分为事件管理、问题管理、成本和需求。可以从运维体系看出处处体现性能,需要的就是在速度、架构、成本去优化。

性能魔方:大规模企业该如何应对应用性能挑战

要想做一个apm——应用性能管理平台,需要做哪些方面?在移动端mobile端、浏览器端都要进行监测,更底层的监测比如网络端、系统端、app、log。只有具有整个全流程监测,才能有一个很好的应用性能管理体系去发现和监测问题。

一般的监测,比如mobile的移动监测,移动监测分很多种,有移动端到端的监测、移动sdk嵌代码到app里面应用的监测、移动server端的js监测和移动web的监测,同样web监测也会分为这些种类。总体来说监测分两种,主动监测和被动监测。被动监测基本上是在应用里面嵌入一些代码,然后在用户访问的时候,直接对用户的行为、时间进行一些记录,然后把这些速度指标进行收集;而主动监测是一个真实的主动的用户访问的过程。一般的做法是,以开发一款产品为例,需要真实模拟用户的去访问、调用浏览器和手机上的应用,然后真实产生一些数据,这些用户源是通过招募的,分布在全国各地,这样就能最真实的去反馈产品在所有用户下的体验。

性能魔方:大规模企业该如何应对应用性能挑战

下面可以看到一个监测平台的架构过程,比如端到端的监测、服务端的监测,这里所有监测的信息,都要进行接入。接入以后就会有数据聚合、数据过滤、数据去噪、数据关联,到最后产生相应的监测数据,同时也会产生数据报表等一些相关信息,这样可供所有技术人员衡量产品性能如何。

性能魔方:大规模企业该如何应对应用性能挑战

这是分析平台的后端处理,分析平台是经过一步步优化的,最先开始产品可能都会用mysql去存数据,大一点的数据可能会用一些分布式文件系统,但是这会存在一些问题,比如随着数据量的增长,mysql就会有一定瓶颈,此时大数据平台就应运而生的加入到了系统的后台里面。

性能魔方:大规模企业该如何应对应用性能挑战

数据源一般包括plugin,server,端对端的监测数据。这里面,主要是在存储端用mysql,mysql主要存一些比如任务、关系型的数据。当然大量的海量数据基本上是存在hbase或者opentsdb的存储系统里面,同时这些也会将数据进行一些去噪、分析,然后产生时间级分钟级,小时级、日级、天级的数据,这时候就会调用大量离线计算的模块,比如spark,mapreduce进行离线计算,在线计算主要是通过storm处理。

监测只是一个手段,目的是希望能进行优化,从优化的角度来说我们一般分四块,首先是从网络端的优化,网络端优化分为idc优化,isp优化、cdn的优化和bgp的优化,还包括dns的优化。

系统优化可以分为系统层面的,比如压缩、缓存优化、传输优化,包括网卡的优化,多个网卡做bang的,一些硬件的优化。

前端主要是优化首屏时间和优化内容,首屏时间比如可以用异步加载,html的优化,在css,js可以用压缩合并和混小,图片优化可以进行无损压缩。

后端优化主要是产品逻辑。尽量让产品逻辑变成简单,可依赖,而不是变成多复杂的,可以优化算法,优化程序,这块主要是开发人员进行优化的一个方向。

<b>大型互联网公司的优化实践</b> 

用户访问质量平台,一般分为六个子产品,比如pc监测和移动监测,这里的性能优化是即时监测,即时监测是一个实时性的过程,能够在第一时间调用全国所有的真实用户去访问产品,输入pc移动的站点地址,一键式分析站点的问题、瓶颈,并快速提供优化建议,同时可以看到细节分析。即时监测相当于一次性的体检,是互联网产品上线前的监测,如果是长期的过程,需考虑用持续监测,持续监测主要是能够监测整个产品的生命周期,元素的趋势视图,通过持续监测可以看出页面中各元素大小、数量的变化趋势,及时发现网页变化,对网页所产生的影响和快速定位性能下降的原因。 

接下来是图片优化,能够提供有损无损的在线和离线海量图片优化服务,实现一键式的全网图片打包。图片好比像是人体中的水分,图片的优化就可以减轻产品的体重,相当于把产品进行减肥瘦身,很多产品线也会接入使用图片优化的功能。一般优化后的图片会减少25%左右,一方面减小体积使用户的访问速度增快,另一方面它就可以使带宽减少,成本也会降低,所以它是一个双赢的过程。

速度准入是对于产品上线前来说的,因为每次发布新版本,都会有很大的改动,都会造成用户体验的下降,有可能会造成访问延时。速度准入能够即刻从全国抽样数百名真实用户的网络,在浏览器完成请求,将速度、瓶颈、优化建议可视化的展现。

性能魔方:大规模企业该如何应对应用性能挑战

之前讲了优化,优化是发现问题,同时要产生告警,这样不用每天查看报表,而这时候也有了质量报警,通过报警去监测问题发生。生产环境的产品因素、系统网络、内容发布、版本更新、各种原因都会造成速度变慢,需要及时告警,针对速度、元素大小、趋势、网络抖动进行监测并建立分析模型。

<b>性能魔方产品的优化实践与成功案例</b>

之前讲了应用性能挑战和大型互联网公司的优化实践案例,下面讲我们现阶段性能魔方产品的优化实践和案例。 

性能优化是手段,最终目的是希望能够提升用户体验,所以性能魔方产品分为三块,能够提供一站式云加速应用性能管理体系,包括云评测、云监测和云加速这三个方向。就好比是去医院的一次体检的问诊疗的过程。

性能魔方:大规模企业该如何应对应用性能挑战

云评测相当于一次性的体检,它能够全面了解应用产品性能的服务,多视图、全方位分析产品在不同地理位置、网络、设备、浏览器下的性能瓶颈,并自动提供行之有效的优化建议。云监测主要是能够监测整个产品的生命周期,它是一个端到端的立体,用户访问、而用户网络、物理及云环境操作系统,应用下载性能监测,它能够让技术人员以系统、网络甚至代码层的角度去监测自己的产品,分析自己产品的应用的性能。 

其实云评测、云监测就相当于去医院看病,去询问又去诊断,如果出了问题,以前我们的做法是提供一些优化建议给出优化报告,最终实施是开发人员或者技术人员,这是不够的,最终是要解决问题,于是我们研发出了一款产品叫做云加速,集合了多年的性能优化的经验。云加速包括图片加速、网络加速、全站加速和移动加速,其中网络加速也就是相当于cdn静态资源的加速。

全站加速是比较核心的,能最终解决问题,全站加速主要分为两块,最开始它是将站点的资源进行重构、动静态剥离、动态进行多点接入、路由优化;在静态这块会做css压缩合并,js合并、图片优化处理,最终把它上到cdn平台上,通过一系列的优化手段,可以速度达到很好的优化效果,网站基本上都能提速大概50%左右。 

mmtrix性能魔方产品未来想要做的一个方向是云存储、云安全、云计算和大数据。谢谢大家!

<b>精彩问答</b>

<b>主持人:</b>

感谢朱总的分享,肯定大家有很多问题想跟朱总进行进一步交流,现场有问题的大家可以直接举手提问,就对刚才朱总分享当中有疑问的或者有不同的观点现场进行交流。 

<b>提问:</b>

朱总您好,我是一个设计师。我想知道经过性能魔方加速过之后的图片,文件的大小是在降低,但是它这个图片的清晰度大概能降低多少?或者是说跟原图,对比起来有什么太大的差别?

<b>朱总:</b>

我们的图片优化其实分为两种,一种是有损的一种是无损的。我们优化比较保守,基本上是保持它不会失真。一般情况下,页面中的图片资源主要包括四种格式:gif、png等。性能魔方云加速会判断浏览器最适合的格式及压缩比例来进行优化,同时也为移动设备和pc设备提供了两种不同的压缩比例。优化后的图片会在性能魔方云加速系统中保留缓存,并将图片url改写,使之可以通过cdn访问。

你是指一键加速吗?一键加速完成的图片在保证不失真的情况之下,还能同时的保证图片的文件的大小在降低?

对。其实如果有合作的话是可以提供接口,因为是失真和不失真是相对的,有的其实可以失真,比如说图片变小了在pc上失真,但在可以在手机上访问是不失真的。

淘宝天猫的钻展图,它首先有固定的规格尺寸,又保证图片的降低,当然我们在没有性能魔方平台之前,我们一直是采用的国外的png、jpg的图片。非常感谢朱总提供这样好的平台,谢谢。

继续阅读