我正在尝试将大文件(50 MB-32 GB)上传到Google.Drive。 我正在使用提供上传逻辑和加密支持的 google-api-dotnet。 主要问题是上传速度缓慢。
我查看了API源代码 source code。每个文件都是通过块上传的(我将块大小设置为4 MB),每个块都是通过新的HttpRequestMessage实例上传的。 HttpClient在api服务启动时创建并重用所有请求。
上传速度为600 kbytes / s,而我的上行速度快10倍。
我用Wireshark捕获了流量:,每个块被分成数百或数千个小的TLS数据包。对于每个小的TLS数据包,都需要确认。 所以结果速度非常慢。
但是当我启动Fiddler代理时,速度就变得与我的上行速度一样快了。 TLS数据包在并行发送,稍后收到确认:
我在5台安装了Win7的PC上尝试了我的代码,所有PC都显示出类似的低上传速度。 但是当我在Win10 PC上尝试时,速度非常好。 另外,我尝试了Google.Drive客户端应用程序,它也有同样的速度问题。 我试图搜索此行为,但没有找到任何信息。
- 为什么4 MB块分成4 KB的TLS数据包? 我可以增加TLS数据包的大小吗?
- 如何像Fiddler一样并行发送TLS数据包?
- 还有其他提高上传速度的方法吗?