Sprawdzone metody i ograniczenia

Gdy używasz BatchJobService, weź pod uwagę te wskazówki.

Zwiększ przepustowość

  • Preferowana jest mniejsza liczba większych zadań niż wiele mniejszych.

  • Uporządkuj przesłane operacje według typu operacji. Jeśli np. Twoje zadanie zawiera operacje dodawania kampanii, grup reklam i kryteriów grup reklam, uporządkuj przesyłane operacje tak, aby wszystkie działania związane z kampanią były widoczne jako pierwsze, po nich wszystkie operacje związane z grupą reklam, a na koniec wszystkie operacje dotyczące kryteriów grupy reklam.

  • W ramach operacji tego samego typu można zwiększyć ich wydajność, grupując je według zasobu nadrzędnego. Jeśli na przykład masz serię obiektów AdGroupCriterionOperation, efektywniej jest grupować działania według grupy reklam, niż łączyć operacje, które wpływają na kryteria grupy reklam w różnych grupach reklam.

Unikanie problemów z równoczesnością

  • Przesyłając wiele zadań równoczesnych dla tego samego konta, spróbuj zmniejszyć prawdopodobieństwo wykonywania zadań na tych samych obiektach w tym samym czasie, przy zachowaniu dużych rozmiarów zadań. Wiele nieukończonych zadań (ze stanem RUNNING), które próbują zmodyfikować ten sam zbiór obiektów, może prowadzić do sytuacji przypominających zakleszczenie, które powodują duże spowolnienie, a nawet awarie.

  • Nie przesyłaj wielu operacji, które zmieniają ten sam obiekt w tym samym zadaniu, ponieważ wynik może być nieprzewidywalny.

Optymalne uzyskiwanie wyników

  • Nie odpytuj stanu zadania zbyt często, ponieważ grozi to wystąpieniem błędów limitu liczby żądań.

  • Pobieraj maksymalnie 1000 wyników na stronę. Serwer może zwrócić ich mniej z powodu obciążenia lub innych czynników.

  • Kolejność wyników będzie taka sama jak w kolejności przesyłania.

Dodatkowe wskazówki dotyczące użytkowania

  • Możesz ustawić górną granicę czasu, przez jaki zadanie wsadowe może być uruchamiane, zanim zostanie anulowane. Podczas tworzenia nowego zadania wsadowego ustaw w polu metadata.execution_limit_seconds preferowany limit czasu (w sekundach). Jeśli zasada metadata.execution_limit_seconds nie jest ustawiona, nie ma domyślnego limitu czasu.

  • Zalecamy,aby do jednego zadania AddBatchJobOperationsRequest dodać nie więcej niż 1000 operacji i użyć sequence_token do przesłania pozostałych operacji do tego samego zadania. W zależności od treści operacji zbyt wiele operacji w 1 AddBatchJobOperationsRequest może spowodować błąd REQUEST_TOO_LARGE. Aby rozwiązać ten problem, zmniejsz liczbę operacji i ponów próbę AddBatchJobOperationsRequest.

Ograniczenia

  • Każdy zasób BatchJob obsługuje do miliona operacji.

  • Na każdym koncie może być jednocześnie do 100 aktywnych lub oczekujących zadań.

  • Oczekujące zadania starsze niż 7 dni są automatycznie usuwane.