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 に答える