Android 开发高手课
张绍文
前微信高级工程师,Tinker 负责人
52721 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
导读 (1讲)
模块一 高质量开发 (25讲)
Android 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

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

离线监控
实时监控
错误
维度
时延
/proc/net接口
TrafficStats类
统一网络库
Native Hook
插桩
PLT Hook技术应用
印象深刻的网络故障
监控方法的尝试
课后作业
角度思考问题
监控的重要性
监控报警
接入层监控
客户端监控
监控流量
监控网络
课后作业
总结
大网络平台监控
移动端监控
大数据下网络该如何监控?

该思维导图由 AI 生成,仅供参考

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

移动端监控

对于移动端来说,我们可能会有各种各样的网络请求。即使使用了 OkHttp 网络库,也可能会有一些开发人员或者第三方组件使用了系统的网络库。那应该如何统一的监控客户端的所有的网络请求呢?
1. 如何监控网络
第一种方法:插桩。
为了兼容性考虑,我首先想到的还是插桩。360 开源的性能监控工具ArgusAPM就是利用 Aspect 切换插桩,实现监控系统和 OkHttp 网络库的请求。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了在大数据环境下进行网络监控的重要性和挑战。作者首先从移动端监控的角度介绍了插桩、Native Hook和统一网络库等三种监控方法,强调了实时性和复杂性对监控的影响。其次,文章讨论了流量监控的方法,包括使用TrafficStats类获取网络流量信息和通过解析proc文件获取网络相关信息的可能性。此外,还提到了对网络信号强度、电平强度等信息的探讨,以及手机厂商在底层获取信息的方式和如何判断WiFi稳定性的问题。整体而言,本文通过客户端和接入层监控的角度,详细介绍了监控报警的分层和监控方法的重要性。文章最后强调了监控在性能优化中的重要性,并鼓励读者从更高的角度思考问题。文章内容丰富,对网络运维人员和技术开发人员具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • csdpz
    我司的app在2018年有一阵子有用户持续反馈网络卡顿。终于花了点力气完善了监控。因为主要是反馈的socket那块的业务,所以对socket请求收发流程分为7个阶段进行了监控,分别是:请求调用,请求入队列,请求开始发送,请求发送成功,收到响应,响应入队列,响应数据解析分发。 当然除了客户端监控数据外,还和服务器数据整合了,能更加准确看到卡顿的占比。 客户端用的是生产者消费者加阻塞队列的模式。遇到了Tcp队头阻塞的问题。一旦进个电梯或者地下室,出现了弱网情况,请求开始发送和请求发送成功的时间差就会急剧放大,而这两个时间段之间仅仅只有一行out.write(data)。前面一个没发完,队列里的都被堵住了。 后来,准备尝试Nio的方式,把请求发送的时间给压下去,但后来想想数据好看了,并不解决实际问题,发不出去还是发不出去,于是作罢。 也想问问各位大佬,有没有好的建议?

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

    2019-01-25
    4
  • Jerry银银
    请教一个问题,对于大公司,可以自己搞个监控系统。可是对于中小型的公司,自己搞监控系统,应该不太现实, 毕竟成本巨大。 然后,我们就想着,接入一些第三方的监控平台。 不知道,你这边有推荐的?

    作者回复: 一般都是一些大公司的出品比较有保障一些

    2019-08-01
    2
  • Yjnull
    想请问网络诊断是怎样去做,有没有什么关键词我去搜索下😢

    作者回复: 网络诊断一般会做几个事情: 1. 连通性诊断,分别是连接的每一个步骤 2. 问题诊断,类似ping,traceroute等操作

    2019-06-21
    1
  • 奚岩
    公司内网服务用的购买的 https 在使用这些服务时经常会出现 timeout,但是正式环境不会,这种如何来监控解决。

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

    2019-02-19
    1
  • 哈珀朋友
    老哥是不是参加了Bugly项目

    作者回复: 没有啊

    2019-01-24
  • zzb226520
    在okhttp中统计建立连接耗时,SSL握手耗时,然后为了确定统计正确,用了电脑上wireshark进行子相应过程的耗时比较。 发现,okhttp中的方法耗时比wireshark统计的耗时大很多,比如okhttp中对SSL握手方法socket.startHandSharke()的耗时可能180ms,但是wireshak显示这一步只有40-50ms。 有人做过类似统计吗?为什么跟电脑抓包对比耗时统计数据会差这么多?难道startHandSharke()不只做是SSL的握手的事,还有别的事在耗时?
    2019-01-25
    1
    6
  • EchoSomeTH
    这个Hook真棒!调用栈,网络请的相关参数都ALOG出来了
    2019-07-25
    2
  • 由于最近这几年都是在做跟网络相关的工作,基本上遇到的问题绍文老师都已经提到了。比如DNS劫持,超时,服务器宕机、假网、白名单等网络问题。其中让我印象最为深刻的是公司内部的wifi上网认证,没有通过认证是无法访问内网和外网。 最后解决这类问题时,我们会主动用浏览器打开认证页面让用户登录。
    2019-01-28
    1
  • 稻子
    🛋
    2019-01-24
    1
  • 微尘
    过了两年 demo 搞起来,用了半天时间
    2022-09-01归属地:北京
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部