问题
对后端来说,网络卡了问题,本身很难去排查,因为是 App 通过互联网连接服务
总结下,以往经验,网络卡,通常会有以下情况造成:
- 某地区网络问题
- 某地区某运营商问题
- 后端服务超载
- 前端网络模块 BUG
- 后端网络模块 BUG
某地区网络问题
一般通过拨测手段,来判断是否有这个问题
比如可以用阿里云的拨测工具: https://boce.aliyun.com/detect/ping
特别是出海的游戏,遇到网络问题,首先就是拨测下
某地区某运营商问题
笔者就遇到过这样的问题,最后排查下来,只有韩国棒子用某运营商业务的手机网络出问题
对于这种问题,只能依靠客户端打点数据上传收集
且信息越详细越好,如:
- IP
- 操作系统
- 地区
- 运营商
- 网络事件
- Ping 延迟
根据这些信息,聚合成图表,对下事发时间,直接就可以排查是否是这个问题
后端服务超载
后端服务超载,也会造成卡顿
这种通常比较好排查。因为遇到这种情况,服务通常是不健康的,线上监控系统通常就已经在告警了
前后端网络模块 BUG
这种概率很低了,一般属于项目前期。开发过程中,通常就会解决掉了
Ping 延迟
如果能让玩家直观的感受到是网络卡而不是其他,这样上报的 bug 就更有针对性
比如,游戏画面上显示 Ping 延迟,就是一个好方法
这里有个小细节,实际上有 2 种 Ping :
- ICMP 协议实现的 Ping
- Ping 实现经过 game 服的回包
这两种都很有用处:
- ICMP 协议,直观反映 App 到服务的网络质量
- game 服处理的会包,结合 ICMP 的差值,能反映服务是否已经超载