新增视频功能后带宽超支1.5GB,应排查上传还是下载逻辑?
上传、下载逻辑均需排查,下载侧为高优先级排查方向
上传逻辑排查项
- 校验
postId生成规则:你提供的上传代码中以post_$postId.mp4作为存储文件名,若postId存在重复生成的问题,会导致同一文件被反复覆盖上传,重复消耗上行带宽 - 核查上传重试逻辑:如果
UploadTask默认开启了无限制失败重试,弱网环境下可能出现单个文件重复上传数十次的情况 - 添加上传前置校验:当前代码未做文件大小校验,需补充校验逻辑,避免异常大文件被误上传
下载逻辑排查项(优先排查)
你的带宽消耗异常大概率来自下载侧,需重点排查以下内容:
- 播放器资源释放逻辑:当前代码未展示
ChewieController的释放逻辑,若页面退出时未主动调用控制器的dispose()方法,会出现后台持续拉取视频流的问题,多次进入同一页面会重复拉取同一个视频资源 - 播放器预加载配置:Chewie默认开启自动预加载,若页面存在视频列表,所有列表项的视频会在页面渲染时自动拉取资源,即使用户未点击播放也会消耗下行带宽
- 存储回源规则:如果存储桶未开启CDN缓存,每次播放器拉取视频都会直接回源存储桶,多次访问同一视频会重复计算下行带宽
其他可能原因
- 存储桶权限配置错误:如果存储桶设置了公共读权限且未做访问限制,可能被爬虫批量爬取视频资源,导致带宽突增
- 带宽统计规则差异:部分云服务商会同时统计上行+下行流量计入带宽消耗,需确认你之前的日均统计是否包含下行流量
修复建议
- 上传侧:
- 限制上传失败重试次数最多3次,避免无意义重复上传
- 新增上传前文件大小校验,超过阈值直接拦截
- 使用UUID等唯一ID生成规则生成
postId,避免文件名重复
- 下载侧:
- 在页面销毁生命周期中主动调用
ChewieController和VideoPlayerController的dispose()方法释放资源,停止视频拉流 - 关闭Chewie的自动播放、自动预加载配置,仅在用户主动点击播放时才初始化播放器拉取资源
- 配置存储桶CDN缓存,视频类资源设置7天以上缓存周期,大幅降低回源带宽
- 在页面销毁生命周期中主动调用
- 临时防护:先开启存储桶带宽阈值告警、测试阶段配置IP白名单,避免持续产生超额费用
内容的提问来源于stack exchange,提问作者Lorenzo Cutrupi
相关产品推荐
相关产品推荐

