1、你们做了哪些稳定性方面的优化?

随着项目的逐渐成熟,用户基数逐渐增多,DAU持续升高,我们遇到了很多稳定性方面的问题,对于我们技术同学遇到了很多的挑战,用户经常使用我们的App卡顿或者是功能不可用,因此我们就针对稳定性开启了专项的优化,我们主要优化了三项:

Crash专项优化(看第二、四点)

性能稳定性优化(看第二点)

业务稳定性优化(看第三点)

通过这三方面的优化我们搭建了移动端的高可用平台。同时,也做了很多的措施来让App真正地实现了高可用。

2、性能稳定性是怎么做的?

全面的性能优化:启动速度、内存优化、绘制优化

线下发现问题、优化为主

线上监控为主

Crash专项优化

我们针对启动速度,内存、布局加载、卡顿、瘦身、流量等多个方面做了多维的优化。

我们的优化主要分为了两个层次,即线上和线下,针对于线下呢,我们侧重于发现问题,直接解决,将问题尽可能在上线之前解决为目的。而真正到了线上呢,我们最主要的目的就是为了监控,对于各个性能纬度的监控呢,可以让我们尽可能早地获取到异常情况的报警。

同时呢,对于线上最严重的性能问题性问题:Crash,我们做了专项的优化,不仅优化了Crash的具体指标,而且也尽可能地获取了Crash发生时的详细信息,结合后端的聚合、报警等功能,便于我们快速地定位问题。

3、业务稳定性如何保障?

数据采集 + 报警

需要对项目的主流程与核心路径进行埋点监控,

同时还需知道每一步发生了多少异常,这样,我们就知道了所有业务流程的转换率以及相应界面的转换率

结合大盘,如果转换率低于某个值,进行报警

异常监控 + 单点追查

兜底策略

移动端业务高可用它侧重于用户功能完整可用,主要是为了解决一些线上一些异常情况导致用户他虽然没有崩溃,也没有性能问题,但是呢,只是单纯的功能不可用的情况,我们需要对项目的主流程、核心路径进行埋点监控,来计算每一步它真实的转换率是多少,同时呢,还需要知道在每一步到底发生了多少异常。

有了大盘的数据,我们就知道如果转换率或者是某些监控的成功率低于某个值,那很有可能就是出现了线上异常,结合了相应的报警功能,我们就不需要等用户来反馈了,这个就是业务稳定性保障的基础。

同时呢,对于一些特殊情况,比如说,开发过程当中或代码中出现了一些catch代码块,捕获住了异常,让程序不崩溃,这其实是不合理的,程序虽然没有崩溃,当时程序的功能已经变得不可用,所以呢,这些被catch的异常我们也需要上报上来,这样我们才能知道用户到底出现了什么问题而导致的异常。

此外,线上还有一些单点问题,比如说用户点击登录一直进不去,这种就属于单点问题,其实我们是无法找出其和其它问题的共性之处的,所以呢,我们就必须要找到它对应的详细信息。

4、如果发生了异常情况,怎么快速止损?

功能开关

统跳中心

动态修复:热修复、资源包更新

自主修复:安全模式

首先,我们对于任何要上线的新功能,要加上一个功能的开关,通过配置中心下发的开关呢,来决定是否要显示新功能的入口。如果有异常情况,可以紧急关闭新功能的入口,那就可以让这个App处于可控的状态了。

然后,我们需要给App设立路由跳转,所有的界面跳转都需要通过路由来分发,如果我们匹配到需要跳转到有bug的这样一个新功能时,那我们就不跳转了,或者是跳转到统一的异常正处理中的界面。

如果这两种方式都不可以,那就可以考虑通过热修复的方式来动态修复,目前热修复的方案其实已经比较成熟了,我们完全可以低成本地在我们的项目中添加热修复的能力,当然,如果有些功能是由RN或WeeX来实现就更好了,那就可以通过更新资源包的方式来实现动态更新。而这些如果都不可以的话呢,那就可以考虑自己去给应用加上一个自主修复的能力,如果App启动多次的话,那就可以考虑清空所有的缓存数据,将App重置到安装的状态,到了最严重的等级呢,可以阻塞主线程,此时一定要等App热修复成功之后才允许用户进入。

Android性能调优 - 稳定性优化相关推荐

  1. Android性能调优篇之探索垃圾回收机制

    开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...

  2. android性能调优的工具,神兵利器-Android 性能调优工具 Hugo

    在进行Android性能调优.减少应用卡顿时,寻找可优化的code是一个必要的过程.如何发现应用中的耗时任务甚至是耗时函数呢,如果可以在log中打印每个方法的执行时间,甚至把执行方法时的输入输出同时打 ...

  3. Android性能调优实例

    本文主要分享自己在appstore项目中的性能调优点,包括 同步改异步.缓存.Layout优化.数据库优化.算法优化.延迟执行等. 一.性能瓶颈点 整个页面主要由6个Page的ViewPager,每个 ...

  4. Linux性能调优的优化思路

    Linux操作系统是一个开源产品,也是一个开源软件的实践和应用平台,在这个平台下有无数的开源软件支撑,我们常见的有apache.tomcat.nginx.mysql.php等等,开源软件的最大理念就是 ...

  5. MySQL 性能调优和优化技巧

    介绍 MySQL 是一种流行的开源数据库应用程序,它以一种有意义且易于访问的方式存储和构造数据.对于大型应用程序,庞大的数据量可能会导致性能问题. 本指南提供了一些关于如何提高 MySQL 数据库性能 ...

  6. Android性能调优:App启动速度优化

    一.App启动分类 1.冷启动 Cold start 在启动应用前,系统还没有App的任何进程.比如设备开机后应用的第一次启动,系统杀掉应用进程 (如:系统内存吃紧引发的 kill 和 用户主动产生的 ...

  7. Android性能调优篇之探索JVM内存分配

    开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访 ...

  8. Android性能调优利器StrictMode

    2019独角兽企业重金招聘Python工程师标准>>> 作为Android开发,日常的开发工作中或多或少要接触到性能问题,比如我的Android程序运行缓慢卡顿,并且常常出现ANR对 ...

  9. android性能调优!2021年Android春招面试经历,再不刷题就晚了!

    前言 对于字节跳动的二面三面而言,Framework+MVP架构+HashMap原理+性能优化+Flutter+源码分析等问题都成高频问点!然而很多的朋友在面试时却答不上或者答不全!今天在这分享下这些 ...

最新文章

  1. 她在博士阶段破釜沉舟转换研究方向后,发表了32篇SCI
  2. 卷积、相关(matlab)
  3. 【量子位节选摘抄】张亚勤:未来10年AI+生物制药大有可为,我们正开展破壁计划
  4. Mysql 中获取刚插入的自增长id的值
  5. 技术人的生命之源在于绝不固步自封而不断进取的精神
  6. ORA-01658:无法为表空间XXX中的段创建initial区
  7. php 正则 回溯,php 正则表达式效率 贪婪、非贪婪与回溯分析
  8. jquery自定义一个放大镜
  9. With(ReadPast)就不会被阻塞吗?
  10. MVC.Net:压缩/保存图片缩略图
  11. 开启弹窗_PC端广告弹窗拦截
  12. httpinvoker
  13. 15000php等于多少人民币,b站多少硬币才相当于1人民币?你一定想不到!
  14. python not_刚接触Python,python中not in怎么解释?求解释一下?
  15. C程序设计--指针(对 “ 数组 ” 进行输入输出操作)
  16. solidworks图纸模板添加_solidworks工程图模板如何设置和替换?
  17. ASP.NET快速入门
  18. 边缘计算与深度学习——初读研究生的迷茫
  19. 论文解读:Predator-Pray biogeography Based Optimization (PPBBO)
  20. WIN10专业版无法隐藏任务栏图标

热门文章

  1. 魏晋南北朝书法家钟繇、王羲之、王献之
  2. 武汉科技大学801电路考研真题
  3. 博彦科技笔面试-2019春招
  4. JS 快捷键(热键)的设置与使用 学习
  5. 做实验时脑电和近红外该选择哪个?
  6. 中国移动云能力中心校招面试总结(一面)
  7. 名称的缩写,首字母缩写
  8. 3分钟教你实现仿微信底部导航栏效果(BottomNavigationView + ViewPager)
  9. electron入门教程
  10. 云开发、自定义组件、分包加载、基础库兼容问题、骨架屏使用