Лучшие практики и ограничения

Учитывайте эти рекомендации при использовании BatchJobService .

Повышение пропускной способности

  • Меньшее количество крупных рабочих мест предпочтительнее множества мелких рабочих мест.

  • Упорядочите загруженные операции по типу операции. Например, если ваше задание содержит операции по добавлению кампаний, групп объявлений и критериев групп объявлений, расположите операции в загрузке так, чтобы сначала были все операции кампании , затем все операции группы объявлений и, наконец, все операции группы объявлений. критериальные операции .

  • В операциях одного типа можно повысить производительность, сгруппировав их по родительскому ресурсу. Например, если у вас есть ряд объектов AdGroupCriterionOperation , может быть более эффективно группировать операции по группам объявлений, а не смешивать операции, которые влияют на критерии группы объявлений в разных группах объявлений.

Избегайте проблем с параллелизмом

  • При отправке нескольких одновременных заданий для одной и той же учетной записи постарайтесь снизить вероятность одновременной работы заданий с одними и теми же объектами, сохраняя при этом большие размеры заданий. Многие незавершенные задания (со статусом RUNNING ), которые пытаются изменить один и тот же набор объектов, могут привести к состояниям, подобным тупику, что приведет к серьезному замедлению работы и даже к сбоям в работе.

  • Не отправляйте несколько операций, которые изменяют один и тот же объект в одном задании, поскольку результат может быть непредсказуемым.

Оптимальное получение результатов

  • Не проверяйте статус задания слишком часто, иначе вы рискуете столкнуться с ошибками ограничения скорости.

  • Не получайте более 1000 результатов на страницу. Сервер может вернуть меньшее количество данных из-за нагрузки или других факторов.

  • Порядок результатов будет таким же, как и порядок загрузки.

Дополнительные рекомендации по использованию

  • Вы можете установить верхнюю границу времени, в течение которого пакетное задание может выполняться до его отмены. При создании нового пакетного задания установите в поле metadata.execution_limit_seconds желаемое ограничение по времени в секундах. Ограничение по времени по умолчанию отсутствует, если не задан metadata.execution_limit_seconds .

  • Рекомендуется добавлять не более 1000 операций на каждый AddBatchJobOperationsRequest и использовать sequence_token для загрузки остальных операций в то же задание. В зависимости от содержимого операций слишком много операций в одном AddBatchJobOperationsRequest может привести к ошибке REQUEST_TOO_LARGE . Эту ошибку можно устранить, уменьшив количество операций и повторив AddBatchJobOperationsRequest .

Ограничения

  • Каждое BatchJob поддерживает до миллиона операций.

  • В каждой учетной записи одновременно может быть до 100 активных или ожидающих заданий.

  • Ожидающие задания старше 7 дней автоматически удаляются.