遅い進捗でもプロキシ経由のダウンロードを読み取りタイムアウト内に保てる
断続的な応答バイトがプロキシ経由のダウンロードを読み取り無活動の制限内に保つ一方で、総所要時間が受け入れられなくなる理由を理解します。
時折数バイトを届ける応答は、各読み取り無活動の制限内に収まりながら、全体としてははるかに長くかかることがあります。読み取りタイムアウトは転送全体の所要時間を測る必要はありません。
ワークロードに応じてポリシーを選びます。有限のアーカイブには完了までの予算が必要です。イベントストリームは正当に何時間も続き、時には静かになることがあります。
有用な進捗を測る
ファイルのダウンロードでは、全体の期限を保ち、クライアントが対応する低速または進捗の制御を検討します。間隔と有用なデータの量を定義します。ハートビートのバイトは活動を示しても、ファイルの完了に向けた実質的な進捗を示さない場合があります。
トンネルの設定とボディの転送を分けて考えます。CONNECT の完了を待つことと、遅い宛先のボディを受信することは、異なる証拠を持つ別の段階です。
すべての終了経路で応答を消費するか閉じます。遅いストリームを開いたままにすると、次のリクエストがプールの容量を待ち、別の理由でさらにタイムアウトが発生することがあります。
観測された所要時間が意図したポリシーを超える場合は、正確なクライアントのバージョンと読み取りループを調べます。正しく動作する無活動タイマー、独自ループの挙動、実装の不具合では、それぞれ異なる修正が必要です。