권장사항 및 제한사항

BatchJobService를 사용할 때는 다음 가이드라인을 고려하세요.

처리량 개선

  • 소규모 작업이 많을 때보다 대규모 작업이 적은 것이 좋습니다.

  • 업로드된 작업을 작업 유형별로 정렬합니다. 예를 들어 작업에 캠페인, 광고 그룹, 광고 그룹 기준을 추가하는 작업이 포함된 경우 업로드에서 모든 캠페인 작업이 먼저 실행되고 그다음에 모든 광고 그룹 작업이 실행되고 마지막으로 모든 광고 그룹 기준 작업이 실행되도록 작업 순서를 지정하세요.

  • 동일한 유형의 작업 내에서 상위 리소스별로 그룹화하면 성능이 향상될 수 있습니다. 예를 들어 일련의 AdGroupCriterionOperation 객체가 있는 경우 여러 광고 그룹의 광고 그룹 기준에 영향을 미치는 작업을 혼합하는 대신 광고 그룹별로 작업을 그룹화하는 것이 더 효율적일 수 있습니다.

동시 실행 문제 방지

  • 동일한 계정에 여러 개의 동시 작업을 제출할 때는 대규모 작업 크기를 유지하면서 동일한 객체에서 작업이 동시에 실행될 가능성을 줄이도록 하세요. RUNNING 상태인 미완료 작업이 많으면 동일한 객체 집합을 변경하려고 시도하여 교착 상태와 같은 상태가 발생하여 심각한 속도 저하 및 작업 실패가 발생할 수 있습니다.

  • 동일한 작업에서 동일한 객체를 변경하는 여러 작업을 제출하지 마세요. 결과를 예측할 수 없기 때문입니다.

최적으로 결과 검색

  • 작업 상태를 너무 자주 폴링하면 속도 제한 오류가 발생할 수 있습니다.

  • 페이지당 1,000개를 초과하는 결과를 검색하지 마세요. 서버는 부하나 기타 요인으로 인해 이보다 적은 수를 반환할 수 있습니다.

  • 결과 순서는 업로드 순서와 동일합니다.

추가 사용 안내

  • 일괄 작업이 취소되기 전에 실행할 수 있는 최대 시간을 설정할 수 있습니다. 새 일괄 작업을 만들 때 metadata.execution_limit_seconds 필드를 원하는 시간 제한(초)으로 설정합니다. metadata.execution_limit_seconds가 설정되지 않은 경우 기본 시간 제한은 없습니다.

  • AddBatchJobOperationsRequest당 1,000개 이하의 작업을 추가하고 sequence_token를 사용하여 나머지 작업을 동일한 작업에 업로드하는 것이 좋습니다. 작업 내용에 따라 단일 AddBatchJobOperationsRequest에 너무 많은 작업이 있으면 REQUEST_TOO_LARGE 오류가 발생할 수 있습니다. 작업 수를 줄이고 AddBatchJobOperationsRequest를 다시 시도하여 이 오류를 처리할 수 있습니다.

제한사항

  • BatchJob는 최대 100만 개의 작업을 지원합니다.

  • 각 계정에는 동시에 최대 100개의 활성 또는 대기 중인 작업이 있을 수 있습니다.

  • 대기 중인 작업이 7일 이상 경과하면 자동으로 삭제됩니다.

  • AddBatchJobOperationsRequest의 최대 크기는 10,484,504바이트입니다. 이 한도를 초과하면 INTERNAL_ERROR이 발생합니다. 제출하기 전에 요청 크기를 확인하고 너무 크면 적절한 조치를 취할 수 있습니다.

    자바

    
    static final int MAX_REQUEST_BYTES = 10_484_504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.getSerializedSize();
    

    Python

    
    from google.ads.googleads.client import GoogleAdsClient
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request._pb.ByteSize()
    

    Ruby

    
    require 'google/ads/google_ads'
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request.to_proto.bytesize
    

    PHP

    
    use Google\Ads\GoogleAds\V16\Resources\Campaign;
    
    const MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    $size_in_bytes = $campaign->byteSize() . PHP_EOL;
    

    .NET

    
    using Google.Protobuf;
    const int MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.ToByteArray().Length;
    

    Perl

    
    use Devel::Size qw(total_size);
    use constant MAX_REQUEST_BYTES => 10484504;
    
    ... (code to get the request object)
    
    my $size_in_bytes = total_size($request);