권장사항 및 제한사항

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);