得物App弱网诊断探索之路

得物App弱网诊断探索之路

💡 原文中文,约9000字,阅读约需22分钟。
📝

内容提要

得物App为了提升弱网用户的使用体验,开发了弱网诊断能力。该工具能够实时诊断用户的网络环境,并给出网络质量分级。通过监听App内的Http请求,采集HttpRTT和吞吐量样本,并根据加权中位数的方式综合估算出网络类型。经线上数据验证,弱网用户占比0.65%。该工具可应用于网络连接优化、全站加速、音视频降质等场景。

🔎

延伸解读

被动诊断的优势与代价

得物弱网诊断采用被动采集,不主动发起探测请求,因此不会消耗用户流量,也不会干扰正在进行的网络请求。尤其在弱网环境下,主动探测的负向影响更严重。但被动方式依赖App内恰好有足够并发请求,若并发不足,吞吐量样本可能稀疏,影响诊断实时性。

吞吐量采集的关键:时间窗口与脏数据过滤

吞吐量采集需在大量数据传输时进行,时间窗口过早或过晚都会导致计算值偏低。得物选择在Http并发5个以上时开启窗口,并过滤小数据量(<32KB)和低利用率样本。这些策略提升了准确性,但也意味着在并发不足或流量较小的场景下,可能无法采集到有效样本。

加权中位数与计算频率的平衡

为处理极端值和网络变化,得物采用加权中位数,结合时间权重(60秒半衰期)和信号强度权重。但每次计算耗时1~10ms,无法在每次请求时重算。因此仅在样本数、信号强度变化或间隔超10秒等条件下重新计算并缓存结果,兼顾了准确性与性能。

弱网判定的准确性与局限

线上数据显示,弱网用户占比0.65%,其中仅约5%的请求耗时低于50分位,区分度明显。但误判仍存在,来源包括分位值判定误差、RTT在阈值附近波动、中位数机制对网络快速变化响应滞后,以及单HOST高并发导致的首包耗时异常。这些局限提示弱网诊断更适合趋势判断,而非精确的瞬时网络状态。

❓

Q&A

得物App的弱网诊断能力是如何提升用户体验的?

得物App的弱网诊断能力通过实时诊断用户的网络环境并给出网络质量分级,从而为弱网用户提供更好的使用体验。

弱网用户在得物App中占比是多少?

弱网用户在得物App中占比为0.65%。

得物App是如何采集HttpRTT和吞吐量的?

得物App通过监听App内的Http请求,记录请求和响应时间差来采集HttpRTT,并在大量数据传输时采集吞吐量。

弱网诊断工具的应用场景有哪些?

弱网诊断工具可应用于网络连接优化、全站加速、音视频降质等场景。

得物App如何确保弱网诊断的准确性?

得物App通过请求耗时与网络传播耗时的比较来判断弱网诊断的准确性,并通过线下测试和线上验证来确定阈值。

得物App的弱网诊断能力是主动还是被动的?

得物App的弱网诊断能力是被动的,通过监听App内的网络请求进行数据采集,不消耗用户资源。

➡️

继续阅读