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