iOS 15.x起NSURLSession后台会话流式上传速度变慢咨询
iOS 15.x 环境下NSURLSession后台会话流式上传S3速率异常问题
问题概述
开发一款基于iOS平台的应用,采用NSURLSession后台会话向S3服务器发起流式请求上传数据,自iOS 15.x版本起,观测到传输速率大幅下降,仅约10 kbps。
现有会话配置
当前使用的NSURLSession配置流程如下:
- 调用
backgroundSessionConfigurationWithIdentifier:方法创建NSURLSessionConfiguration实例 - 将
HTTPMaximumConnectionsPerHost属性值设置为8 - 将
timeoutIntervalForRequest属性值设置为60s - 将
timeoutIntervalForResource属性值设置为86400s(即1天) - 将
discretionary属性值设置为false - 将
TLSMinimumSupportedProtocolVersion属性值设置为tls_protocol_version_TLSv12 - 调用
sessionWithConfiguration:方法创建NSURLSession实例 - 调用
uploadTaskWithRequest:方法发起上传请求
已完成的测试验证结果
- 实体设备测试表现:
- iPadOS 14.8.1设备上无任何性能下降问题
- iPadOS 15.3.1、15.5版本设备上性能下降明显,上传速度仅为旧版本的1/6
- 改用
ephemeralSessionConfiguration创建临时会话时,上传速度恢复正常,无性能衰减,与旧版本表现一致
所有测试过程中,应用始终保持在前台运行状态。
- 模拟器测试表现:
该性能下降问题在iOS模拟器中同样存在,且模拟器上的表现与宿主机macOS版本直接相关:- 在macOS 12.4系统、Xcode 13.2编译环境下,iOS 12.x、13.x、14.x、15.x版本模拟器均出现性能下降问题
- 在macOS 11.4系统、Xcode 12.4编译环境下构建相同应用,iOS 12.x、13.x、14.x版本模拟器无任何性能下降表现
待澄清的技术疑问
- iOS 15.x及更高版本的后台会话配置逻辑是否存在官方未明确说明的变更?
- 当前使用
backgroundSessionConfigurationWithIdentifier创建后台会话的实现,是否需要迁移至iOS 13推出的Background Tasks机制? - 后台会话的请求调度是否完全由iOS系统管控,客户端对传输速度几乎没有调控权限?
内容的提问来源于stack exchange,提问作者gauravs
相关产品推荐
相关产品推荐

