2014-09-30 6 views
3

일부 로그 파일을 복사하는 동안의 구성 요소 카운트 0세트 (인 gsutil 구성 명령을 통해 생성 된) 인 gsutil 구성 객체 (rateLimitExceeded 오류)

"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 stat을 수행하면 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으로 설정하는 방법을 아는 사람이 있습니까?

답변

5

이러한 오류는 무시해도됩니다. 이전에 알았 으면, gsutil cp 명령이 작업을 완료합니다.

이러한 오류를 제거하려면이 해결 방법을 사용하여 복합 개체의 Component-Count 헤더를 0으로 설정하고 기본적으로 개체의 "구성을 해제"할 수 있습니다. 그렇게하려면 유선에 덤프하고 다시 Cloud Storage로 되돌릴 수 있습니다.

이 작업을 수행하는 간단한 방법은 cp 명령에서 "daisy-chain" 모드 (-D 옵션)를 사용하는 것입니다 : (멀티 스레드)와 CP 그것도 인 gsutil -m와 잘 작동

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

-R (재귀 적) 옵션!

이 프로세스의 속도를 높이고 비용을 낮추려면 컴퓨터 엔진 VM 내에서 수행하는 것이 좋으며, 바람직하게는 양동이에 가까운 영역에서 수행하는 것이 좋습니다.

해피 코딩!

+3

참고로, 'gsutil cp -D gs : //mybucket/PROD/composite.log gs : // mybucket/PROD/notcompositeanymore.log'를 사용할 수 있습니다. 이것은 정확히'-D'가 설계된 것입니다 - 연결할 필요가 없습니다. – jterrace

+2

[구성 요소 수에 대한 문서] (https://cloud.google.com/storage/docs/composite-objects#_Count)에도 링크 할 수 있습니다. – jterrace

+0

올바른 방법을 지적 해 주셔서 감사합니다. 내 대답을 편집했습니다. –

관련 문제