gsutil cp 命令的性能下降了

问题描述 投票:0回答:2

我们观察到,当很少有此类进程运行以将不同的单个文件复制到 Google 存储上的不同位置时,用于将单个文件复制到 Google 存储的 gsutil cp 命令会更好。当时的正常速度是~50mbps。但随着“gsutil cp”将单个文件复制到谷歌存储的进程增加,这些天的平均速度已经下降到~10mbps。

我认为“gsutil -m cp”命令不会提高性能,因为只有 1 个文件需要复制。

随着 gsutil cp 进程数量的增加来复制许多单个文件,这种低速度可归因于什么。我们可以做什么来提高这些过程的速度

google-cloud-storage
2个回答
2
投票

gsutil 可以并行上传单个大文件。它通过将文件的各个部分作为单独的对象上传到 GCS 中,然后要求 GCS 将它们组合在一起,然后删除各个子对象来实现这一点。

注意因为这涉及上传对象,然后几乎立即删除它们,所以您不应该在近线存储桶上执行此操作,因为删除最近上传的对象会产生额外费用。

您可以设置一个文件大小,超过该大小 gsutil 将使用此行为。试试这个:

gsutil -o GSUtil:parallel_composite_upload_threshold=100M cp bigfile gs://your-bucket

有关该功能的更多文档可在此处找到:https://cloud.google.com/storage/docs/gsutil/commands/cp#parallel-composite-uploads


0
投票

与此同时,Google 发布了

gcloud storage
CLI,可自动优化上传和下载的并行化;无需额外参数!在许多情况下,它提供的性能将使您遇到其他一些瓶颈(网络、主机 CPU 等),并且它每次都在性能和易用性方面胜过
gsutil
。要使用它复制文件,请参阅
gcloud storage cp
的文档。

正如另一个答案中提到的,

gsutil cp
gcloud storage cp
,使用复合上传模式执行上传,这意味着它们将大文件分成块,上传块文件,组合它们,然后删除块。因为临时块文件是存储桶中的普通文件,如果在删除它们时保存为近线文件,您将需要支付提前删除费用。如果检测到互操作性问题,我提到的两个 CLI 工具将自动禁用复合上传。

如果您可以自己编码,另一种选择是使用分段上传 (MPU) API,因为它不会遇到这些相同的互操作性挑战。我在最近的博客文章中更详细地讨论了这个问题 使用 Google Cloud Storage (GCS) 进行高吞吐量文件传输

© www.soinside.com 2019 - 2024. All rights reserved.