随着应用性能管理(APM)越来越被开发和运维人员所熟知,7月17日在深圳召开的 ArchSummit 2015全球架构师峰会 特开设应用性能管理专场,来自听云、腾讯和OPPO的讲师分享了他们在性能监控、管理和调优上的实践经验。
APM 领域今年在国内资本市场引起了高度关注,这其中最耀眼的要数最近在新三板上市的听云。听云自成立以来一直关注在网络和性能监控领域,其产品和实力受到市场 认可。听云技术副总裁吴静涛分享的是《业务级运维利器》,分析了目前进行全网应用性能监控的几种方式和它们的优劣点,以及传统运维和业务级运维的差异。
自 2007年以来,移动互联网迅猛发展,传统的B/S架构转变为APP+云的云/端架构。无论是终端、APP、网络传输和数据中心都面临着非常大的挑战,而 它们的每一个环节都对最终用户体验有着巨大的影响,因此,传统的性能监控也面临着巨大挑战,新的应用性能管理需要能监控从整个网络到终端、数据中心的性能 情况。
目前的应用性能监控主要分主动式监控和被动式监控两种,主动式监控指的是通过布设监控 点对应用和服务进行抽样式监控,被动式则指收集应用的日志和其它数据然后通过分析达到监控目的。主动式监控的优点是非侵入式,不影响性能,可做发布前、发 布后监测,缺点是监测网络节点与真实用户的行为存在差异,而网络部署成本也高。被动式监控的优点是可覆盖全样本,准备性高,并且成本较低,缺点是无法提供 竞品和对标数据,插码会带来工作量和性能的影响。开发者应该根据自己的需求选用不同的方式。
应用性能监控根据目标的不同又分为客户端监控和服务端监控。
客户端监控方式如下:
仅部署客户端APM存在局限性,它受网络影响严重,无法精准定位服务端的问题。因此要做到全网的性能监控,服务端APM必不可少。
服务端APM一般采用被动式监控,并且已经有一些成熟的ITOA工具如ELK技术栈,它的实现方式分为旁路监听和应用内探针。
通过这些方式可实现端到端的应用性能监控,从而让运维从传统运维进入到业务级运维的新阶段。
传统运维的各岗位角色是割裂的,客服、外网监控、网络运维、研发、DBA log等都只对自己的领域负责,沟通成本很高。业务级运维通过一个平台来将业务、网络、主机、运维、研发各个角色聚合在一起,统一解决业务、运维、开发团队的问题,从而为业务提供坚实的保障。
腾讯社交网络面对海量用户,一个强大的应用性能监控平台是必须的,腾讯内部也一直在这方面投入精力。腾讯SNG社交平台运维负责人梁安定给大家分享了他们对运维和ITOA的理解和腾讯内部APM平台系统的研发。
在腾讯,运维分为ITOM和ITOA,前者注重效率,后者注重监控,而ITOA又分为运维自动化和运营分析。ITOA的高级产品形式分三种:APM类、日志分析类和端到端的立体化监控类。这几种方式各有利弊:
腾讯的运维体系包括DevOps理念的织云系统,以及立体化监控,后者包括端到端监控、用户端监控、服务端监控和基础监控。
在 这之外,面对极度复杂的业务架构,腾讯开发了端到端的智能监控系统ROOT,基于业务架构,结合数据流关系,通过时间相关性、面积权重等算法,将监控告警 进行筛选分类,发掘有业务价值的告警,并直接分析给出告警根源。它解决的是业务架构随着时间发展越发庞大而复杂,运维监控系统在多个节点对同一现象出现大 量告警,而真正的原因告警被淹没。
比如,如果DB宕机,我们的理想是智能定位到数据层监控,然后发出告警,但现实是,用户端、接入层、逻辑层、数据层的监控点均有N个告警产生。ROOT可以解决这种问题,从现象告警转变到原因告警。
ROOT的研发是和业务紧密相关的,在基础数据层面,梳理业务架构,绘制业务拓扑图,同时实现业务之间访问关系降维。在计算逻辑上,则通过相关时间告警叠加、链路权重计算、过滤噪点、原因模型分析,最后实现根源告警。
ROOT架构上有两个重点是业务访问关系链路池和原因告警分析模型集,这些都是平时经过分析历史告警信息和业务架构得出,最后给出的告警信息包括现象、原因、历史同类/类似告警以及责任人。
梁安定最后总结道:每款互联网产品面对的问题不尽相同,虽然APM的应用场景很广,但在DevOps协同合作的前提下,应寻求共同的目标将价值最大化。
接下来由听云移动研发总监江赛给大家带来的分享:《移动应用性能分析与总结》,主要讲了5点:
最后出场的是来自OPPO数据中心的负责人黄良懿,他分享的是访问速度优化方面的一些实践经验。
访问速度优化分为网络优化、服务端优化、浏览器前端优化,以及由于移动互联网的特殊性带来的移动客户端优化。其中,优化 工作的侧重点分布是:前端占60%,网络占25%,后端占15%。
在优化之前,首先要有基准,Web性能优化的指标有:
网络优化的手段包括DNS优化、网络连接优化、线路优化。常见问题包括测试与真实用户差异如DNS污染、峰谷时段问题,南北互联互通问题,延迟加大引发的状态同步问题等。
服务端优化手段包括尽早刷新缓冲区,Facebook BigPipe解决方案,以及通过异步API、并行处理等方式实现页面生成时间加速。
浏览器前端的优化已经有一些成熟的规范和流程,如 ySlow rules 和 Google pagespeed , 调优常用工具有firebug+ySlow+pagespeed、Apache Benchmark、Dynatrace AJAX Edition、听云Network等。常见手段有降低请求数(很有效但也带来不少问题)、降低传输量、提高并发性能、加速可响应时间、定位TTI问题、 合理利用带宽等。
移动客户端访问速度优化手段包括资源预取、自建DNS、数据访问策略优化,以及在嵌入WebView时,使用Native接管WebView的网络及缓存,WebView只管渲染内容,以此突破webView的局限性。
由于篇幅所限,本文只是略微总结了讲师们的分享,有更多精彩之处未能一一传达,如果你觉得意犹未尽,欢迎下载ArchSummit深圳 APM专场的PPT ,也可通过StuQ 在线查看 ,我们后续还会整理演讲的视频,通过InfoQ与大家分享。