设置为0 gsutil组合对象的组件数(rateLimitExceeded错误)

时间:2014-09-30 12:03:07

标签: google-cloud-storage gsutil

复制某些日志文件(通过gsutil compose命令创建)时:

gsutil -m cp -R gs://mybucket/PROD/ gs://mybucket/TEST/ 

我们遇到了很多像这样的错误:

"errors":[  
    {  
        "domain":"usageLimits",
        "reason":"rateLimitExceeded",
        "message":"The total number of compose requests for this bucket's project exceeds the rate limit. Please reduce the rate of compose requests."
    }
],
"code":429,

对这些对象执行gsutil统计我可以看到它们的Component-Count是972等等。

我们试图走捷径:

gsutil setmeta -h "Component-Count:0" gs://mybucket/PROD/composite.log

但我们打了一个:

CommandException: Invalid or disallowed header (component-count).
Only these fields (plus x-goog-meta-* fields) can be set or unset:

实际上,复制过程已完全执行,因此只看到所有这些错误是非常烦人的。

有谁知道如何将组件数设置为0?

2 个答案:

答案 0 :(得分:5)

您可以安全地忽略这些错误。正如您所注意到的,gsutil cp命令完成了它的工作。

如果你想摆脱这些错误,你可能想尝试这种解决方法,将复合对象的Component-Count标题设置为0,基本上"取消组合"对象。为此,您可以将其转储到线路并再次返回到云存储。

一种简单的方法是使用cp命令中的"daisy-chain"模式(-D选项):

gsutil cp -D gs://mybucket/PROD/composite.log gs://mybucket/PROD/notcompositeanymore.log

它甚至可以与gsutil -m(多线程)和cp -R(递归)选项一起使用!

如果您担心提高速度并降低此过程的成本,我建议您在计算引擎VM中进行,最好是在靠近您的存储区的区域。

快乐的编码!

答案 1 :(得分:0)

这不再是必需的。 GCS不再对涉及复合对象的复制操作实施速率限制。