GCS 可恢复上传速度

1 投票
1 回答
685 浏览
提问于 2025-04-19 13:30

我有个关于使用可恢复上传到谷歌云存储的上传速度的问题。 我写了一个桌面Java客户端,用来上传大文件到GCS(因为有一些特殊功能,所以我们公司不想用gsutil)。大约两个月前测试时,它能很好地利用可用的网络带宽,上传速度大约是25Mbps的连接中有20Mbps。这个项目暂停了差不多两个月,现在重新开始时,同样的客户端上传速度却很差,只有25Mbps中的1.4Mbps。 我还写了一个简单的Python脚本来检查是否会有同样的问题,结果稍微快一点,但也只有大约2Mbps。gsutil工具的表现和我的Python脚本差不多。 我还在不同的网络环境下进行了测试,上传速度超过50Mbps。

结果也很糟糕:

  • Java客户端 2.4Mbps
  • Python脚本 3.2Mbps
  • gsutil 3.2Mbps

唯一改变的就是谷歌云存储API的版本。我现在使用的是JSON API,而第一次测试是在v1beta API版本上进行的。现在使用过时的API和新的API没有区别。

有没有人遇到过同样的上传速度下降的问题?

你们的平均上传速度是多少?

可能导致这种上传性能大幅下降的原因是什么?

并行上传复合对象能帮助我充分利用可用带宽吗?

1 个回答

1

为了了解你能期待的最高带宽,我们建议你运行 gsutil perfdiag 这个命令。

比如说,你想看看上传一个100MB的文件效果如何:

gsutil perfdiag -t wthru -s 100M gs://bucketname

这个命令会上传一个100MB的文件五次,并给出结果。以下是我运行后的一个示例输出:

------------------------------------------------------------------------------
                               Write Throughput                               
------------------------------------------------------------------------------
Copied a 100 MB file 5 times for a total transfer size of 500 MB.
Write throughput: 71.61 Mbit/s.

它还会输出很多其他信息,这些信息可能会帮助你找出问题。如果perfdiag的输出显示的带宽比你的应用程序高很多,那可能是你的代码有问题。如果perfdiag的输出带宽也很低,那可能是你到谷歌服务器的网络连接有问题,而perfdiag的输出可以帮助你找出这个问题。如果这些都不能解决你的问题,请把结果文件(perfdiag -o output.json)发邮件到 gs-team@google.com。

撰写回答