最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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:025314
用户头像

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

关注

评论

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

C++调用Go方法的字符串传递问题及解决方案

华为云开发者联盟

c++ 内存 代码

适用初学者的5种Python数据输入技术

华为云开发者联盟

Python 数据 函数

学习笔记:架构师训练营-第八周

四夕晖

会装虚拟机,删库不用跑

MySQL从删库到跑路

虚拟机 virtualbox

懵了!一口气问了我18个JVM问题!

yes

面试 JVM

奋力准备一个月成功进字节,来看一下我都看了哪些资料做了哪些准备

小Q

学习 编程 程序员 架构 面试

这4个Java异常框架,很多人竟然还不知道

比伯

Java 编程 架构 面试 计算机

架构师训练营 -week09-作业

大刘

极客大学架构师训练营

架构师训练营 -week09-总结

大刘

极客大学架构师训练营

阿里P8大牛整理的300页图解网络知识+计算机底层操作系统

Java架构之路

Java 编程 程序员 架构 面试

Java读取Excel/CSV格式的科学计数法问题

团子粑粑

Java Excel csv

【MySQL】如何最大程度防止人为误操作MySQL数据库?这次我懂了!!

冰河

MySQL 数据库 性能优化 数据安全 分布式数据储存

智变的八个瞬间,京东智联云化“?”为“!”

脑极体

7面阿里,最后一面居然挂在了JVM上面!狠下决心恶补JVM知识

Java架构之路

Java 程序员 架构 面试 编程语言

备战2021年金三银四,阿里P8面试官梳理的2020年999道大厂高频Java面试题(附答案)

Java架构之路

Java 编程 程序员 架构 面试

国网浙江建设公司推进“信用基建+区块链”建设

CECBC

区块链 国网 基建

新工业化如何实现?今年的信息化百人会中藏着“懂行”密码

脑极体

《网络是怎样连接的》PDF下载

计算机与AI

网络

K3d vs Kind 谁更适合本地研发

郭旭东

Kubernetes k3s kind

为什么有的专科程序员比本科程序员薪资高?他们之间有多大的区别?

Java架构师迁哥

《深入理解java虚拟机》- java内存区域

never say never

JVM笔记 堆内存

Android热修复之DexPatch介绍

阿里云金融线TAM SRE专家服务团队

android

在Codurance是如何面试技术人员的

sherlockq

面试 TDD

读谱对吉他手来说重要吗?试试它提升你的读谱效率

奈奈的杂社

学习 编曲 打谱

nginx 平滑升级、以及导入第三方模块

sinsy

nginx 升级

数字货币引发的金融变革

CECBC

数字化时代

我真的尽力了,最经典Redis面试14题,没时间复习就看这个吧

小Q

redis 学习 编程 架构 面试

来不及解释了,快上车!LR.NET开发平台助力企业信息互联

雯雯写代码

爆火的低代码,到底是真需求还是伪风口?

ToB行业头条

低代码

微服务通信之feign的配置隔离

编程 微服务 计算机

高承实:区块链的工业革命带来了什么?

CECBC

区块链 分布式

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