1

使用 dispatch_group_async 和不同的调度队列和调度组打开超过 6 个并行 NSURLConnection.sendSynchronousRequest 时出现错误代码 504 Gateway Timeout。

  • 这个错误并不一致,大约有 30% 的时间发生。

  • 当我将并行连接数量减少到 5 个时,不会发生此错误。

现在有人为什么会这样吗?NSURLConnection 线程不安全吗?

4

1 回答 1

1

您正在从服务器获得状态 504。问题不在 NSURLConnection 中。这意味着 NSURLConnection 已经与服务器进行了通信,服务器不高兴,并报告了该错误。

我认为服务器无法处理太多的同时请求。如果许多不同的设备同时使用服务器,也可能会发生这种情况。

您需要能够处理任何错误以及适当返回的任何状态。在状态 504 的情况下,这只是服务器太忙的指示,正确的处理是在几秒钟后尝试相同的请求,并且通常不要同时尝试太多的请求。

于 2015-05-11T20:18:03.493 回答