Gdy używasz BatchJobService
, weź pod uwagę te wskazówki:
- Aby uzyskać lepszą przepustowość, preferujemy mniej dużych zadań zamiast wielu mniejszych zadań.
- Zalecamy dodawanie nie więcej niż 1000 operacji do
AddBatchJobOperationsRequest
i użyciesequence_token
do przesłania pozostałych operacji do tego samego zadania. W zależności od treści operacji zbyt wiele operacji w 1AddBatchJobOperationsRequest
może spowodować błądREQUEST_TOO_LARGE
. Aby rozwiązać ten problem, zmniejsz liczbę operacji i spróbuj ponownie wykonaćAddBatchJobOperationsRequest
. - 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.
- Aby uzyskać lepszą przepustowość, uporządkuj przesłane operacje według typu operacji. Jeśli np. Twoje zadanie obejmuje operacje dodawania kampanii, grup reklam i kryteriów grup reklam, uporządkuj przesyłane operacje tak, aby wszystkie operacje kampanii 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.
- 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 kolejność przesyłania w przypadku przetwarzania zbiorczego.
- 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 zasadametadata.execution_limit_seconds
nie jest ustawiona, nie ma domyślnego limitu czasu.
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.