Android开发高手课
张绍文
前微信高级工程师,Tinker负责人
立即订阅
12609 人已学习
课程目录
已完结 61 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 焦虑的移动开发者该如何破局?
免费
导读 (1讲)
导读 | 如何打造高质量的应用?
模块一 高质量开发 (25讲)
01 | 崩溃优化(上):关于“崩溃”那些事儿
02 | 崩溃优化(下):应用崩溃了,你应该如何去分析?
03 | 内存优化(上):4GB内存时代,再谈内存优化
04 | 内存优化(下):内存优化这件事,应该从哪里着手?
05 | 卡顿优化(上):你要掌握的卡顿分析方法
06 | 卡顿优化(下):如何监控应用卡顿?
06补充篇 | 卡顿优化:卡顿现场与卡顿分析
07 | 启动优化(上):从启动过程看启动速度优化
08 | 启动优化(下):优化启动速度的进阶方法
09 | I/O优化(上):开发工程师必备的I/O优化知识
10 | I/O优化(中):不同I/O方式的使用场景是什么?
11 | I/O优化(下):如何监控线上I/O操作?
12 | 存储优化(上):常见的数据存储方法有哪些?
13 | 存储优化(中):如何优化数据存储?
14 | 存储优化(下):数据库SQLite的使用和优化
15 | 网络优化(上):移动开发工程师必备的网络优化知识
16 | 网络优化(中):复杂多变的移动网络该如何优化?
17 | 网络优化(下):大数据下网络该如何监控?
18 | 耗电优化(上):从电量优化的演进看耗电分析
19 | 耗电优化(下):耗电的优化方法与线上监控
20 | UI 优化(上):UI 渲染的几个关键概念
21 | UI 优化(下):如何优化 UI 渲染?
22 | 包体积优化(上):如何减少安装包大小?
23 | 包体积优化(下):资源优化的进阶实践
24 | 想成为Android高手,你需要先搞定这三个问题
模块二 高效开发 (9讲)
25 | 如何提升组织与个人的研发效能?
26 | 关于编译,你需要了解什么?
27 | 编译插桩的三种方法:AspectJ、ASM、ReDex
28 | 大数据与AI,如何高效地测试?
29 | 从每月到每天,如何给版本发布提速?
30 | 数据评估(上):如何实现高可用的上报组件?
31 | 数据评估(下):什么是大数据平台?
32 | 线上疑难问题该如何排查和跟踪?
33 | 做一名有高度的移动开发工程师
模块三 架构演进 (9讲)
34 | 聊聊重构:优秀的架构都是演进而来的
35 | Native Hook 技术,天使还是魔鬼?
36 | 跨平台开发的现状与应用
37 | 移动开发新大陆:工作三年半,移动开发转型手游开发
38 | 移动开发新大陆:Android音视频开发
39 | 移动开发新大陆: 边缘智能计算的趋势
40 | 动态化实践,如何选择适合自己的方案?
41 | 聊聊Flutter,面对层出不穷的新技术该如何跟进?
42 | Android开发高手课学习心得
练习Sample跑起来 (8讲)
练习Sample跑起来 | 热点问题答疑第1期
练习Sample跑起来 | 热点问题答疑第2期
练习Sample跑起来 | 热点问题答疑第3期
练习Sample跑起来 | 热点问题答疑第4期
练习Sample跑起来 | ASM插桩强化练习
练习Sample跑起来 | 唯鹿同学的练习手记 第1辑
练习Sample跑起来 | 唯鹿同学的练习手记 第2辑
练习Sample跑起来 | 唯鹿同学的练习手记 第3辑
特别放送 (7讲)
Android JVM TI机制详解(内含福利彩蛋)
专栏学得苦?可能是方法没找对
专栏学得苦?可能你还需要一份配套学习书单
Native下如何获取调用栈?
聊聊Framework的学习方法
Android工程师的“面试指南”
程序员修炼之路 | 设计能力的提升途径
结束语 (1讲)
结束语 | 移动开发的今天和明天
Android开发高手课
登录|注册

17 | 网络优化(下):大数据下网络该如何监控?

张绍文 2019-01-24
通过上一期的学习,我们对如何打造一个高质量的网络已经有了一个整体的认识。但是这就足够了吗?回想一下,一个网络请求从手机到后台服务器,会涉及基站、光纤、路由器这些硬件设施,也会跟运营商和服务器机房有关。
不论是基站故障、光纤被挖断、运营商挟持,还是我们的机房、CDN 服务商出现故障,都有可能会引起用户网络出现问题。你有没有感觉线上经常突发各种千奇百怪的网络问题,很多公司的运维人员每天过得胆战心惊、疲于奔命。
“善良”的故障过了一段时间之后莫名其妙就好了,“顽固”的故障难以定位也难以解决。这些故障究竟是如何产生的?为什么突然就恢复了?它们影响了多少用户、哪些用户?想要解决这些问题离不开高质量的网络,而高质量的网络又离不开强大的监控。今天我们就一起来看看网络该如何监控吧。

移动端监控

对于移动端来说,我们可能会有各种各样的网络请求。即使使用了 OkHttp 网络库,也可能会有一些开发人员或者第三方组件使用了系统的网络库。那应该如何统一的监控客户端的所有的网络请求呢?
1. 如何监控网络
第一种方法:插桩。
为了兼容性考虑,我首先想到的还是插桩。360 开源的性能监控工具ArgusAPM就是利用 Aspect 切换插桩,实现监控系统和 OkHttp 网络库的请求。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Android开发高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(11)

  • zzb226520
    在okhttp中统计建立连接耗时,SSL握手耗时,然后为了确定统计正确,用了电脑上wireshark进行子相应过程的耗时比较。

    发现,okhttp中的方法耗时比wireshark统计的耗时大很多,比如okhttp中对SSL握手方法socket.startHandSharke()的耗时可能180ms,但是wireshak显示这一步只有40-50ms。

    有人做过类似统计吗?为什么跟电脑抓包对比耗时统计数据会差这么多?难道startHandSharke()不只做是SSL的握手的事,还有别的事在耗时?
    2019-01-25
    2
  • Jerry银银
    请教一个问题,对于大公司,可以自己搞个监控系统。可是对于中小型的公司,自己搞监控系统,应该不太现实, 毕竟成本巨大。 然后,我们就想着,接入一些第三方的监控平台。 不知道,你这边有推荐的?
    2019-08-01
    1
  • EchoSomeTH
    这个Hook真棒!调用栈,网络请的相关参数都ALOG出来了
    2019-07-25
  • Yjnull
    想请问网络诊断是怎样去做,有没有什么关键词我去搜索下😢
    2019-06-21
  • 奚岩
    公司内网服务用的购买的 https 在使用这些服务时经常会出现 timeout,但是正式环境不会,这种如何来监控解决。

    作者回复: 网络监控我们会有全链路的监控,从请求发起的整个过程。具体的指标可以有类似秒开率,超时率这些

    2019-02-19
  • 由于最近这几年都是在做跟网络相关的工作,基本上遇到的问题绍文老师都已经提到了。比如DNS劫持,超时,服务器宕机、假网、白名单等网络问题。其中让我印象最为深刻的是公司内部的wifi上网认证,没有通过认证是无法访问内网和外网。 最后解决这类问题时,我们会主动用浏览器打开认证页面让用户登录。
     
    2019-01-28
  • csdpz
    我司的app在2018年有一阵子有用户持续反馈网络卡顿。终于花了点力气完善了监控。因为主要是反馈的socket那块的业务,所以对socket请求收发流程分为7个阶段进行了监控,分别是:请求调用,请求入队列,请求开始发送,请求发送成功,收到响应,响应入队列,响应数据解析分发。

    当然除了客户端监控数据外,还和服务器数据整合了,能更加准确看到卡顿的占比。

    客户端用的是生产者消费者加阻塞队列的模式。遇到了Tcp队头阻塞的问题。一旦进个电梯或者地下室,出现了弱网情况,请求开始发送和请求发送成功的时间差就会急剧放大,而这两个时间段之间仅仅只有一行out.write(data)。前面一个没发完,队列里的都被堵住了。

    后来,准备尝试Nio的方式,把请求发送的时间给压下去,但后来想想数据好看了,并不解决实际问题,发不出去还是发不出去,于是作罢。

    也想问问各位大佬,有没有好的建议?


    作者回复: 弱网络的时候会尽量保证信令网络有可能成功

    2019-01-25
  • 哈珀朋友
    老哥是不是参加了Bugly项目

    作者回复: 没有啊

    2019-01-24
  • 坚持远方
    创业公司整天忙于做业务,对于监控这些做的还是不够,所以目前App并没有监控方面的东西,但是跟着作者的步骤还是学到了很多
    2019-01-24
  • Owen
    干货多多,在这里想了解下大家都有用哪些网络库?
    2019-01-24
  • 稻子
    🛋
    2019-01-24
收起评论
11
返回
顶部