iOS - 错误信息 "no space left on device"

iOS - Error message "no space left on device"

我们突然遇到一个似乎与 iOS 14 有关的问题,因为我们在以前的版本中没有遇到过这些错误。

在应用程序启动时,我们对不同的网络服务进行了大量的网络请求。在用户完全登录之前,总共有 158 个 GET、POST 和 PUT 请求。应用程序在此之前使用 260MB 的内存。当用户切换到不同的帐户时,登录过程将再次开始,并发送另外 158 个请求。现在,如果用户再次决定使用新帐户登录,则登录过程将再次开始。但是这一次,网络请求随机开始取消并出现这样的错误消息:

Error Domain=NSPOSIXErrorDomain Code=28 "No space left on device" UserInfo={_NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <EA2DAE7D-F7AD-4979-8215-E716163FA725>.<1>, _kCFStreamErrorDomainKey=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <EA2DAE7D-F7AD-4979-8215-E716163FA725>.<1>"), _kCFStreamErrorCodeKey=28} 

所以在两分钟的时间范围内,大约 400 - 500 个 HTTP 请求,网络层开始取消那些由于内存不足 space。虽然它可能会用完 3GB。

在我们开始遇到此类错误之前和之后,应用程序网络逻辑没有太大变化。我们也只使用一个 SessionManager 实例。在我看来,网络堆栈似乎会开始被请求的数量淹没,因此开始取消它们。也许 iOS14 在这方面变得更严格了?还有其他人可能遇到过类似的问题吗?

我们在基础网络层使用 AFNetworking。

非常感谢任何帮助。

经过一段时间的调查,它原来是我们用于调试目的的库。这个库 DBDebugToolkit 带有我们默认打开的网络记录器功能。在高流量的情况下,网络记录器会迅速增加内存使用量,直到我们的请求被取消。现在它默认关闭,但可以在我们的调试菜单中打开。