最佳实践和限制

使用 BatchJobService 时,请遵循以下准则:

  • 为了提高吞吐量,最好执行较少的较大作业,而不是许多较小的作业。
  • 建议每个 AddBatchJobOperationsRequest 添加的操作不超过 1,000 项,并使用 sequence_token 将其余操作上传到同一作业。根据操作的内容,单个 AddBatchJobOperationsRequest 中的操作过多可能会导致 REQUEST_TOO_LARGE 错误。您可以通过减少操作数量并重试 AddBatchJobOperationsRequest 来处理此错误。
  • 在为同一帐号提交多个并发作业时,请尽量降低针对相同对象同时执行多项作业的可能性,同时保持大型作业的规模。如果对同一组对象执行 mutate 操作的未完成作业(状态为 RUNNING)过多,可能会出现死锁的情况,导致系统速度严重降低,甚至造成作业失败。
  • 请勿在同一作业中提交对同一对象执行 mutate 操作的多个操作,因为结果可能无法预测。
  • 为了提高吞吐量,请按操作类型对上传操作进行排序。例如,如果您的作业包含添加广告系列、广告组和广告组条件的操作,请对上传文件中的操作进行排序,首先是所有广告系列操作,接着是所有广告组操作,最后是所有广告组条件操作
  • 请勿过于频繁地轮询作业状态,否则可能会发生速率限制错误。
  • 每页检索的结果不得超过 1,000 条。由于负载或其他因素,服务器返回的内容数量可能会少于该值。
  • 结果顺序将与批处理的上传顺序相同。
  • 您可以设置一个上限,指定批量作业在被取消之前可以运行的时长。创建新的批量作业时,请将 metadata.execution_limit_seconds 字段设置为您的首选时间限制(以秒为单位)。如果未设置 metadata.execution_limit_seconds,则不存在默认的时间限制。

限制

  • 每个 BatchJob 最多支持一百万次操作。
  • 每个帐号可同时拥有最多 100 个活跃或待处理作业。
  • 系统会自动移除存在时长超过 7 天的待处理作业。