速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

ArchSummit 深圳 APM 专场总结:性能监控与调优实践干货分享

  • 2015-07-23
  • 本文字数:3774 字

    阅读完需:约 12 分钟

随着应用性能管理(APM)越来越被开发和运维人员所熟知,7 月 17 日在深圳召开的 ArchSummit 2015 全球架构师峰会特开设应用性能管理专场,来自听云、腾讯和 OPPO 的讲师分享了他们在性能监控、管理和调优上的实践经验。

全网应用性能监控方式与业务级运维

APM 领域今年在国内资本市场引起了高度关注,这其中最耀眼的要数最近在新三板上市的听云。听云自成立以来一直关注在网络和性能监控领域,其产品和实力受到市场 认可。听云技术副总裁吴静涛分享的是《业务级运维利器》,分析了目前进行全网应用性能监控的几种方式和它们的优劣点,以及传统运维和业务级运维的差异。

自 2007 年以来,移动互联网迅猛发展,传统的 B/S 架构转变为 APP+ 云的云 / 端架构。无论是终端、APP、网络传输和数据中心都面临着非常大的挑战,而 它们的每一个环节都对最终用户体验有着巨大的影响,因此,传统的性能监控也面临着巨大挑战,新的应用性能管理需要能监控从整个网络到终端、数据中心的性能 情况。

目前的应用性能监控主要分主动式监控和被动式监控两种,主动式监控指的是通过布设监控 点对应用和服务进行抽样式监控,被动式则指收集应用的日志和其它数据然后通过分析达到监控目的。主动式监控的优点是非侵入式,不影响性能,可做发布前、发 布后监测,缺点是监测网络节点与真实用户的行为存在差异,而网络部署成本也高。被动式监控的优点是可覆盖全样本,准备性高,并且成本较低,缺点是无法提供 竞品和对标数据,插码会带来工作量和性能的影响。开发者应该根据自己的需求选用不同的方式。

应用性能监控根据目标的不同又分为客户端监控和服务端监控。

客户端监控方式如下:

  • 基于自动化测试的拨测:主动式监控,客户端监控。主要通过覆盖全面的监测网络,部署自动化的监测工具。
  • 页面插码监测:被动式、客户端监控。主要通过在客户端浏览器插入 JavaScript 代码以采集最终用户的性能体验,W3C 推出了 Web 性能 API 标准,现在已经可以做大非常细粒度的监控。
  • 移动应用性能采集。因为移动端应用有多种方式,原生应用、Hybrid App 以及 Web App,因此监控的方式也多样化,有通过手机浏览器自动拨测、嵌入 SDK、HTML5 页面内插件、JSBridge 等方式。

仅部署客户端 APM 存在局限性,它受网络影响严重,无法精准定位服务端的问题。因此要做到全网的性能监控,服务端 APM 必不可少。

服务端 APM 一般采用被动式监控,并且已经有一些成熟的 ITOA 工具如 ELK 技术栈,它的实现方式分为旁路监听和应用内探针。

  • 服务端旁路监听:部署定位后通过 SPAN,TAP 旁路应用访问流量进行 Sniffer,解析网络报文后再进行各类 TCP 协议分析和性能采集(NPM)。它的优点是非侵入式,对生产影响最小,缺点是难以适配多种协议,无法定位到问题代码等。
  • 应用内探针:通过在应用代码中埋点来实现性能监控 BCI(ByteCode Instrumentation) 技术。优点是可实现代码级的监控,缺点是它是侵入式的,对性能有轻微影响。

通过这些方式可实现端到端的应用性能监控,从而让运维从传统运维进入到业务级运维的新阶段。

传统运维的各岗位角色是割裂的,客服、外网监控、网络运维、研发、DBA log 等都只对自己的领域负责,沟通成本很高。业务级运维通过一个平台来将业务、网络、主机、运维、研发各个角色聚合在一起,统一解决业务、运维、开发团队的问题,从而为业务提供坚实的保障。

腾讯社交网络端到端运维监控体系揭秘

腾讯社交网络面对海量用户,一个强大的应用性能监控平台是必须的,腾讯内部也一直在这方面投入精力。腾讯 SNG 社交平台运维负责人梁安定给大家分享了他们对运维和 ITOA 的理解和腾讯内部 APM 平台系统的研发。

在腾讯,运维分为 ITOM 和 ITOA,前者注重效率,后者注重监控,而 ITOA 又分为运维自动化和运营分析。ITOA 的高级产品形式分三种:APM 类、日志分析类和端到端的立体化监控类。这几种方式各有利弊:

  • ITOA 之 APM:这里指的是第三方 APM,它的优势在于对遗留系统、IT 能力弱的组织、性能问题频发的系统支持较好,能降低故障定位时间、提升用户体验,它们的挑战来自于对微服务和标准化的支持。这一类的代表有听云、AppDynamics、New Relic。
  • ITOA 之日志分析:它的优势在于更贴近业务的日志获取,更多元化的日志分析,以及更多价值化的数据呈现。它 也能降低故障定位时间,提升用户体验,体现 IT 运营的业务价值。它的挑战来自海量日志的收集和处理,以及数据服务的 SAAS 化能力。这一类的代表有 splunk、sumologic,以及开源的 ELK 方案。
  • ITOA 之立体化监控:它的优势在于贴近用户的故障发现能力,更全面的故障告警能力,挑战在于监控理念的转变、监控的 SaaS 化能力。

腾讯的运维体系包括 DevOps 理念的织云系统,以及立体化监控,后者包括端到端监控、用户端监控、服务端监控和基础监控。

在 这之外,面对极度复杂的业务架构,腾讯开发了端到端的智能监控系统 ROOT,基于业务架构,结合数据流关系,通过时间相关性、面积权重等算法,将监控告警 进行筛选分类,发掘有业务价值的告警,并直接分析给出告警根源。它解决的是业务架构随着时间发展越发庞大而复杂,运维监控系统在多个节点对同一现象出现大 量告警,而真正的原因告警被淹没。

比如,如果 DB 宕机,我们的理想是智能定位到数据层监控,然后发出告警,但现实是,用户端、接入层、逻辑层、数据层的监控点均有 N 个告警产生。ROOT 可以解决这种问题,从现象告警转变到原因告警。

ROOT 的研发是和业务紧密相关的,在基础数据层面,梳理业务架构,绘制业务拓扑图,同时实现业务之间访问关系降维。在计算逻辑上,则通过相关时间告警叠加、链路权重计算、过滤噪点、原因模型分析,最后实现根源告警。

ROOT 架构上有两个重点是业务访问关系链路池和原因告警分析模型集,这些都是平时经过分析历史告警信息和业务架构得出,最后给出的告警信息包括现象、原因、历史同类 / 类似告警以及责任人。

梁安定最后总结道:每款互联网产品面对的问题不尽相同,虽然 APM 的应用场景很广,但在 DevOps 协同合作的前提下,应寻求共同的目标将价值最大化。

移动应用性能分析与总结

接下来由听云移动研发总监江赛给大家带来的分享:《移动应用性能分析与总结》,主要讲了 5 点:

  1. 怎样去评价一款应用是优秀的移动应用。听云根据对市场上的应用调研分析认为,崩溃率 iOS 3‰、Android 2‰以内,错误率 8‰以内,请求响应时间 400ms 以内的应用可以称为优秀,但实际上大部分应用都达不到这个标准。
  2. 影响移动应用系统的罪魁祸首。一共总结出十大罪魁祸首,包括连接超时、闪退、卡顿、崩溃、黑白屏、网络劫持、交互性能差、CPU 使用率问题、内存泄露、耗电高。
  3. 如何写出高效代码?这里是避免写出影响性能的代码的一些建议,包括合理的网络访问、对数据和报表的解读、HTTP 库的选择、数据序列化、图片处理等。
  4. 运用技术手段监控应用性能。性能优化很大一部分工作要花在分析问题上,即如何找出瓶颈,合理的使用技术能减少分析问题的时间。iOS 性能监控手段 有 Objective-C 中的 Swizzle、C 接口 Fishhook、符号表分析工具 atos 等,Android 性能监控手段有 WebView 中的 hook、Instrumentation 监控 HttpURLConnection、C 接口中的 hook、符号表分析工具 atosl。
  5. 移动应用性能常见的性能指标。这里介绍了一些常见的性能指标以及听云对这些指标的跟踪。包括 Crash 指标、慢交互指标、交互指标、网络访问指标和错误指标。

全网访问速度优化

最后出场的是来自 OPPO 数据中心的负责人黄良懿,他分享的是访问速度优化方面的一些实践经验。

访问速度优化分为网络优化、服务端优化、浏览器前端优化,以及由于移动互联网的特殊性带来的移动客户端优化。其中,优化 工作的侧重点分布是:前端占 60%,网络占 25%,后端占 15%。

在优化之前,首先要有基准,Web 性能优化的指标有:

  • DNS resolution time:DNS 解析时间
  • TCP connection time:TCP 连接时间
  • HTTP redirect time:HTTP 重定向时间
  • Time to first byte:首包时间
  • HTML content time + Page parse time = DOM loaded time: 页面下载完成时间 + 页面解析时间 =DOM 加载时间
  • First paint time:首次绘制时间
  • Above the fold time:首屏时间
  • Full page object load time:加载完成时间

网络优化的手段包括 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 与大家分享。

2015-07-23 03:025861
用户头像

发布了 164 篇内容, 共 108.0 次阅读, 收获喜欢 392 次。

关注

评论

发布
暂无评论
发现更多内容

分布式缓存、消息系统和异步架构

架构5班杨娟Jessie

极客大学架构师训练营

就餐卡系统设计

架构师训练营第五章总结

叮叮董董

架构师训练营第五章作业

叮叮董董

springBoot集成rabbitmq并实现延时队列

生命在于折腾

RabbitMQ

架构师训练营 - 第五周 - 学习总结

韩挺

架构师训练营学习总结——缓存与消息队列【第五周】

王海

极客大学架构师训练营

不懂SpringApplication生命周期事件?那就等于不会Spring Boot嘛

YourBatman

Spring Boot SpringApplication

使用@AutoConfigureBefore调整配置顺序竟没生效?

YourBatman

Java Spring Boot @AutoConfigureBefore

首次揭秘!​春晚活动下快手实时链路保障实践

Apache Flink

Apache flink 架构 实时计算

架构师训练营 Week 05 作业

Wancho

区块链技术打通医疗应用场景

CECBC

行业资讯 生产 区块链技术 生活服务

Week5 学习总结

wyzwlj

极客大学架构师训练营

Spring 同名 Bean 加载策略

xiaoxi666

spring bean 同名 覆盖

开发人员应当避免的代价高昂的职业错误

小隐乐乐

职业规划 职业素养 架构师

你都如何回忆我,带着笑或是很沉默

小天同学

回忆 高考 青春

Week 05- 作业一:一致性 hash 算法

dean

极客大学架构师训练营

命题作业5-1 【C++实现版本】

天之彼方

c++

架构师训练营第5周作业

Bruce Xiong

动手实现一致性hash算法

极客大学架构师训练营 分布式缓存 一致性哈希 一致性hash

week5-总结 技术选型

Geek_z9dmvw

用一致性Hash算法的实现负载均衡(Kotlin)

Acker飏

极客大学架构师训练营 一致性Hash算法

一致性Hash算法以及Java代码实现

架构5班杨娟Jessie

极客大学架构师训练营

week2作业

架构师训练营 - 第五周 - 作业

韩挺

Week 05- 作业二:学习总结

dean

极客大学架构师训练营

第五周作业-一致性hash算法实现

吴建中

极客大学架构师训练营

Week 5 作业

Shawn

Week 05 命题作业

卧石漾溪

极客大学架构师训练营

Week5 一致性hash算法

TiK

【架构师训练营 - 作业 -5】一致性HASH算法实现

小动物

极客大学架构师训练营 作业 第五周

ArchSummit深圳APM专场总结:性能监控与调优实践干货分享_后端_徐川_InfoQ精选文章