GCS 可恢复上传速度
Posted
技术标签:
【中文标题】GCS 可恢复上传速度【英文标题】:GCS resumable uploads speed 【发布时间】:2014-10-27 19:06:32 【问题描述】:我有一个关于使用可恢复上传到 Google Cloud Storage 的上传速度的问题。 我编写了一个桌面 java 客户端来将大文件上传到 GCS(它有一些特殊的功能,这就是为什么 gsutil 不是我公司的答案)。在大约 2 个月前运行的测试期间,它很好地利用了可用的连接带宽,在 25Mbps 连接中大约有 20Mbps。该项目被冻结了将近 2 个月,现在当它重新打开时,同一个客户端以非常低的速度上传,在 25Mbps 的可用速度中只有 1.4Mbps。 我编写了简单的 Python 脚本来检查它是否会出现同样的问题,并且速度会快一点,但仍然在 2Mbps 左右。 Gsutil 工具的性能几乎与我的 Python 脚本相同。 我还在不同的网络基础设施上进行了测试,上传速度超过 50Mbps。
结果也很差:
Java 客户端 2.4Mbps Python 脚本 3.2Mbps gsutil 3.2Mbps唯一改变的是 Google Cloud Storage API 版本。我正在使用 JSON API,第一个测试是在 v1beta API 版本上运行的。 目前,我是否仍在使用已弃用的 API 或新的 API,这没有区别。
有没有人遇到过同样的上传速度下降?
您的平均上传速度是多少?
上传性能大幅下降的可能原因是什么?
复合对象的并行上传能否帮助我充分利用可用带宽?
【问题讨论】:
【参考方案1】:要确定您可以预期的最高带宽是多少,我们建议运行gsutil perfdiag 命令。
例如,要查看它上传 100 MB 文件的效果:
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 输出也是低带宽,那么您到 Google 服务器的网络路径可能有问题,perfdiag 输出可以帮助识别问题。如果这不能帮助解决您的问题,请将结果文件 (perfdiag -o output.json
) 发送至 gs-team@google.com。
【讨论】:
感谢您的回答,这对我很有帮助。我无法在 gsutil 4.5 版上运行 perfdiag -t wthru 命令,因为它抛出了'NoneType' object is not callable.
异常(我注意到尽管有错误,但测试文件仍存在于 GCS 存储桶中)。 lat 和 rthru 运行没有问题。我设法在上传 100M 文件的 gsutil 4.2 上运行测试。单线程的结果与我的 Python 脚本相同,约为 3.2Mbps。我还对 4 个线程进行了测试,它成功地将上传速度提升到了 8Mbps 以上。
测试结果说明我的代码没问题,但我的网络连接有问题。我想知道为什么 2 个月前在同一网络基础设施上运行的测试会有如此大的差异。你有什么建议我可以在日志中检查什么我必须认识到限制上传到谷歌服务器的原因或者我应该向你发送 json 日志文件吗?再次感谢您的帮助。
有可能你不在美国吗?如果您在欧盟,请确保您正在写入欧盟存储桶。否则,尝试到 storage.googleapis.com 的跟踪路由
嗯,没错。我在欧盟,我在创建存储桶时没有提供位置限制。我将尝试创建一个 EU 存储桶,并让知道它是否有帮助。再次感谢。
嗯..我创建了具有位置约束“EU”的新存储桶,但它并没有帮助。上传速度和以前一样。以上是关于GCS 可恢复上传速度的主要内容,如果未能解决你的问题,请参考以下文章
每 5 分钟上传到 GCS 的文本文件如何将它们上传到 BigQuery?
GCS 签名 URL:我可以设置上传的最大文件大小吗? [复制]