技术实践第四期|解读移动开发者日常-性能监控平台应用

简介:应用性能监控平台是用来帮助客户提升应用性能质量和稳定性的重要环节,本人作为一名移动端开发者有着丰富的使用和运维经验,希望通过本文分享过往的心得和使用经验,让我参与开发的U-APM这款产品中,作为借鉴可以在中长期规划中帮助更多的开发者。

作者:友盟+技术专家 谦翔

一、概述

应用性能监控平台是用来帮助客户提升应用性能质量和稳定性的重要环节,本人作为一名移动端开发者有着丰富的使用和运维经验,希望通过本文分享过往的心得和使用经验,让我参与开发的U-APM这款产品中,作为借鉴可以在中长期规划中帮助更多的开发者。

(以下内容仅作为稳定性监控平台这类平台的使用经验和心得,文中提及平台仅供参考)

二、产品受众

1. 了解他们

应用性能监控平台的使用者往往是站在移动终端最前线的开发者,他们需要关注端的稳定性、用户性能、体验等方面。好的工具可以协助他们在日常运维中的工作。

1.1 移动开发者团队职责构成

1.jpg

此类产品的受众主要是移动开发者,而移动开发者开发者也会分为前端和客户端,分别根据自己所使用的技术栈特性进行职责分配,当然跨端技术的出现也让边界不再那么清晰。

1.2 移动开发者日常工作

2.jpg

开发者日常的工作职责主要分成两大部分开发和运维,开发中出现的问题一般可以通过调试环境就可以定位解决,而运维阶段,线上的代码被压缩混淆加密后变的难以辨认无法直接定位问题。不同系统、运行环境、网络情况和低质量的代码则会带来不可预知的性能问题,运维工作的量化汇报等等。这些都是移动开发者们日常所面临的困难。

1.3 场景归纳

3.jpg

如果把应用性能监控平台的使用场景分为上线前上线后,大致罗列了以上场景。

1.4 应用性能监控平台

针对以上场景,市面上或者公司内部的应用性能监控平台绝大部分能够解决

4.jpg

2. 案例分享

下面我会结合上面提到的场景分享三个案例

2.1 案例1(单设备错误排查)

单设备错误排查的场景对于值班人/开发者的要求很高,其在于排查时间的紧迫性和对开发链路熟悉以及排查工具的完备性等。(此场景常见于重要客户或领导反馈)

5.jpg

6.jpg

2.2 案例2(性能优化)

7.jpg

2.2.1 优化背景

  • 技术栈:React Native
  • 优势:RN 拥有一次编写三端执行和动态部署和逻辑下发到客户端的能力,解决客户端版本审核及更新效率低、三端开发技术方案不一致、三端公共需求存在重复劳动等问题
  • 劣势:RN执行阶段可分为RN加载阶段和RN运行阶段,相应的RN页面所面临的性能问题也不尽相同

2.2.2 RN框架加载流程

为了更清晰的了解RN加载阶段的问题所在,我们先来分析下RN的加载机制

在进入整个RN页面的流程中,RN框架加载会经历以下步骤:

8.jpg

  • 包下载及解压缩:加载时发现本地没有对应的包文件,会先从服务器上下载并解压包的文件。
  • 获取初始化引擎:RN预初始引擎的功能,提前创建一个初始化好的引擎并缓存,缓存在退出页面2分钟之后释放。
  • 加载业务包:向一个初始化好的引擎中,加载业务的JS代码。该环节受限于业务JS的大小及设备性能,该加载时间普遍较长。
  • 运行业务包:执行业务JS中runApplication()方法,开始渲染Native页面。该环节受限于业务JS的复杂度及设备性能,如果首次渲染的组件很多,该加载时间会变长。

2.2.3 RN框架常用指标和维度

  • RN加载阶段的性能优劣,最直观的感受就是页面加载耗时
  • 所以RN技术在带来种种优点的同时,也在存在一些性能和体验问题,这需要一些优化手段和指标来支撑业务的稳定运行

9.jpg

不同的终端技术栈需要结合自身加载和运行的关键阶段,量身打造适合自己的性能指标和维度。这可以让开发者监控页面加载和运行过程的每个环节,进行针对性优化。

2.2.4 优化过程&结果

问题发现:

  • 发现以上页面指标,页面加载时间(90分位)长时间处于1.2s左右高于要求的标准阈值1s以内
  • 参考RN加载流程经过多维度筛查,发现很多用户是首次访问该页面,下载代码包需要大量耗时,低网络更是如此,所以我们需要提前用户下载bundle的时机,还有减少bundle的大小。

解决方案:

  • 知道问题所在就好办多了,我们整理了针对包大小优化,包预下载时间等一系列的优化方案的组合拳,这里就不过多展开。

优化结果:

  • 优化结果:页面加载时间(90分位)减少耗时至0.5s

2.3 案例3(汇报)

汇报工作方式一般分为两种报告和值班推送的形式,主要将所监控页面或者业务线重要的性能指标进行实时或定期追踪同步,方便负责团队进行下一步行动(比如:优化、错误修复等)

10.jpg

网络促销日值班场景(某营销促销日  xxxx.xx.xx)

营销促销日前一周

  • 汇总各移动端团队负责的业务
  • 罗列各移动端团队业务所覆盖的页面,确认监控是否覆盖
  • 各团队技术值班负责人确认各技术栈(H5,Native,RN等)数据指标和告警阈值并设置应用性能监控进行定时汇报推送值班群
  • 各小组确定值班日安排,实时跟踪值班群阈值异常情况,并及时响应。

以上是本期干货内容的介绍,希望友盟+研发团队撰写的技术内容可以更好地帮助开发者们解决问题,友盟+将陪伴开发者们一起进步,一起成长。敬请期待下一期内容。

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

彻底理解操作系统:CPU与实模式

作者 | 陆小风来源 | 码农的荒岛求生‍对于人类来说,我们不喜欢拐弯抹角,喜欢更直接的东西,“有话直说”、“没有中间商赚差价”、“简洁的设计”等等,然而对于计算机,尤其是对内存管理来说则恰恰相反,在这…

边缘计算的 4 种类型都有哪些?

作者 | Addo Zhang来源 | 云原生指北本篇文章译自 SUNKU RANGANATH 的 4 Types of Edge Computing - Broadly Categorized。文章通过 往返终端设备和数据中心的延迟 来对边缘计算的类型进行大致的分类,通俗易懂,方便大家对边缘计算有个大概的了解。边缘计…

OpenKruise v1.0:云原生应用自动化达到新的高峰

简介:OpenKruise 是针对 Kubernetes 的增强能力套件,聚焦于云原生应用的部署、升级、运维、稳定性防护等领域。 云原生应用自动化管理套件、CNCF Sandbox 项目 -- OpenKruise,近期发布了 v1.0 大版本。 OpenKruise[1] 是针对 Kubernetes 的…

Serverless Kubernetes 落地实践

简介:如何通过原生 Kubernetes 提供 Serverless 能力?如何借力丰富的云原生社区生态?本文将给大家介绍一下我们在 Serverless Kubernetes 上的落地实践。 作者:元毅 导读 Kubernetes 作为当今云原生业界标准,具备良…

如何在零停机的情况下迁移 Kubernetes 集群

简介:本文将通过集群迁移的需求、场景以及实践方式,介绍如何基于阿里云容器服务 ACK,在零停机的情况下迁移 Kubernetes 集群。 作者:顾静(子白)|阿里云高级研发工程师;谢瑶瑶&#…

轻松理解 Docker 网络虚拟化基础之 veth 设备!

作者 | 张彦飞allen来源 | 开发内功修炼最近我又对网络虚拟化技术产生了浓厚的兴趣,迫切想搞明白在 Docker 等虚拟技术下,网络底层是如何运行的。不得不说,网络虚拟化技术是我给自己抛的又一个大坑。虽然我自认为把原生 Linux 网络实现过程理…

如何做好数字化体验管理,了解一下?

简介:本文主要分为三部分,第一部分是数字化体验的必要性,从数字化体验管理对业务的影响和数字化体验管理对企业的价值两个方面来介绍其必要性;第二部分,ARMS 在数字化体验管理上的产品能力介绍;第三部分&am…

深信服智能边缘计算平台与 OpenYurt 落地方案探索与实践

简介:本文将介绍边缘计算落地的机遇与挑战,以及边缘容器开源项目 OpenYurt 在企业生产环境下的实践方案。 作者:赵震,深信服云计算开发工程师,OpenYurt 社区 Member 编者案:在 5G、物联网等新技术的持续推…

云原生的本手、妙手和俗手

作者 | 步尔斯特来源 | 步尔斯特刚刚看到一个话题:Java大军,真的开始把目光从Spring Cloud转向云原生系的k8s Istio了么?乍一看,有一丝不解,Java大军?Spring Cloud?Kubernetes?Serv…

云原生背景下故障演练体系建设的思考与实践—云原生混沌工程系列之指南篇

简介:生产环境的突袭演练是我们迈出的艰难但有力的一步,锻炼了研发运维人员的应急响应能力,在真实用户场景下锤炼系统,推进了产品的轮班制度,提升了云原生底座的稳定性和竞争力。 作者:智妍(郑…

Spring Boot Serverless 实战系列“部署篇” | Mall 应用

简介:本篇中为各位讲述如何将 Mall 应用部署到函数计算平台上。为了让分析更有代表性,我选择了 Github 上 star 数超过 50k 的电商应用 mall 作为示例。 作者:西流 导读:Spring Boot 是基于 Java Spring 框架的套件,它…

押宝云原生,Ampere Computing打响服务器芯片变革关键一枪

“闯龙潭,越虎穴”这句话用来形容在服务器领域披荆斩棘的Arm架构服务器器芯片似乎最为合适不过。所谓“龙潭”“虎穴”指的便是雄霸服务器芯片市场数载的intel与AMD,而他们所属的x86架构,更是数据中心芯片领域的绝对主流。然而云原生时代的到…

阿里云实时数仓Hologres年度发布,解读数仓新趋势

简介:阿里云实时数仓Hologres年度发布,解读数仓新趋势。 1月7日,阿里云实时数仓Hologres发布最新版本,在成本、可用性、在线高可用等多方面进行了能力升级,行存吞吐提升100%,列存吞吐提升30%,支…

服务发现与配置管理高可用实践

简介:本篇是微服务高可用最佳实践系列分享的开篇,系列内容持续更新中,期待大家的关注。 作者:三辰|阿里云云原生微服务基础架构团队技术专家,负责 MSE 引擎高可用架构 本篇是微服务高可用最佳实践系列分享…

联想首次详解混合云Lenovo xCloud五大优势,如何打造智能化数字底座

多年积累之后,联想混合云品牌Lenovo xCloud主打云原生、智能运维、私有云、多云管理4大产品家族,9款通用解决方案,覆盖客户“建云、上云、用云和管云”的全部场景 6月10日,联想举办“弹性韧性悟性——多云混合时代Lenovo xCloud提…

阿里云何川:开放兼容的云,计算巢帮助合作伙伴云化升级

简介:保障业务稳定性,提供安全的云上互联网,助力合作伙伴实现规模化,打通多渠道分发。 12月21日,在阿里云弹性计算年度峰会上,阿里云弹性计算高级产品专家何川发表了题为《开放兼容的云,计算巢…

只用两个自定义 Hooks 就能替代 React-Redux ?

作者 | 👽来源 | 前端Sharing前言之前有朋友问我,React Hooks 能否解决 React 项目状态管理的问题。这个问题让我思索了很久,最后得出的结论是:能,不过需要两个自定义 hooks 去实现。那么具体如何实现的呢?…

java queue源码_Java高并发系列之ArrayBlockingQueue源码解析

JUC包下定义了一个接口:BlockingQueue。其实现类有ArrayBlockingQueue等。本文先来介绍一下ArrayBlockingQueue。从字面可以看出,ArrayBlockingQueue是一种基于数组的阻塞队列,阻塞队列在线程池中会经常使用到。首先来看看ArrayBlockingQueue…

圆桌对话:云时代下,企业运维面临的挑战与机遇

简介:四位企业运维大咖展开对话,讨论“云时代下,企业运维面临的挑战与机遇”。 编者按:上云,已经成为了企业势不可挡的选择。云计算所拥有的“软件定义一切”的特性,推动了敏捷弹性、DevOps、智能运维和基…

揭晓阿里云神龙团队拿下TPCx-BB排名第一的背后技术

简介:近日,TPC Benchmark Express-BigBench(简称TPCx-BB)公布了最新的世界排名,阿里云自主研发的神龙大数据加速引擎获得了TPCx-BB SF3000排名第一的成绩。TPCx-BB测试分为性能与性价比两个维度。其中,在性能维度,在本…