大きなファイル(50 MB〜32 GB)をGoogle.Driveにアップロードしようとしています。私はアップロードロジックと暗号化のサポートを提供するgoogle-api-dotnetを使用しています。主な問題はアップロード速度が遅いことです。C#HttpClientのアップロード速度が遅い
私はapi source codeを見ました。各ファイルはチャンクでアップロードされます(チャンクサイズは4 MBに設定されます)。各チャンクは新しいHttpRequestMessageインスタンスを介してアップロードされます。 HttpClientは、apiサービスが開始され、すべての要求に対して再利用されると作成されます。
アップロード速度は600kバイト/秒で、アップリンクは10倍高速ですが安定しています。
Wiresharkでトラフィックをキャプチャしました。 各チャンクは、数百または数千の小さなTLSパケットに分割されています。そして、小さなTLSがパックされるたびに、確認が期待されます。結果として生じる速度は非常に低い。
しかし、私がFiddlerプロキシを起動すると、スピードはアップリンクほど速くなります。 TLSは、並行して非常に速く行くパケットと確認が遅れて受信されています
私は5 PCのwin7のとの私のコードを試してみましたが、すべてが同様の低アップロード速度を示しました。しかし、私がWin10 PCを試したとき、スピードはとても良かったです。 また、私はGoogle.Driveクライアントアプリケーションを試してみましたが、速度にも同じ問題がありました。 この動作について検索しようとしましたが、何も見つかりませんでした。
- 4MBのチャンクが4KBのTLSパケットに分割されるのはなぜですか? TLSパケットのサイズを増やすことはできますか?
- FiddlerのようにTLSパケットを並行して送信するにはどうすればよいですか?
- アップロード速度を上げる方法は他にありますか?
これはhttps://ask.wireshark.org/questions/38768/slow-upload-speed-from-windows-stations-to-ssl-hostsに記載されている問題の変形であるのだろうか。 Fiddler)が動き出していますが、HttpClientの使用はそうではありません。 –
私はhttps://github.com/Redth/HttpTwoに試してみます –
私は同じ問題に直面しています。この問題の回避策はありましたか? – Mayuresh