

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon EC2 竞价型最佳实践用于 AWS Batch
<a name="bestpractice6"></a>

当您选择 Amazon Elastic Compute Cloud (EC2) 竞价型实例时，您可能可以优化工作流程以节省成本，有时甚至可以显著节省成本。有关更多信息，请参阅 [Amazon EC2 竞价型的最佳实践](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-best-practices.html#be-instance-type-flexible)。

要优化您的工作流程以节省成本，请考虑以下 AWS Batch 的 Amazon EC2 竞价型最佳实践：
+ **选择 `SPOT_CAPACITY_OPTIMIZED` 分配策略** – AWS Batch 从最深的 Amazon EC2 竞价型容量池中选择 Amazon EC2 实例。如果您担心中断，这是一个合适的选择。有关更多信息，请参阅 [AWS Batch 的实例类型分配策略](allocation-strategies.md)。
+ **多样化实例类型** – 要使您的实例类型多样化，请考虑兼容的大小和系列，然后根据价格或可用性进行 AWS Batch 选择。例如，考虑将 `c5.24xlarge` 作为 `c5.12xlarge` 或 `c5a`、`c5n`、`c5d`、`m5` 和 `m5d` 系列的替代方案。有关更多信息，请参阅[灵活选择实例类型和可用区](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/spot-best-practices.html#be-instance-type-flexible)。
+ **减少作业运行时或检查点** – 我们建议不要在使用 Amazon EC2 竞价型实例运行需要一小时或更长时间的作业，以免中断。如果将作业分成小部分或设置检查点，时间不超过 30 分钟，则可以显著降低中断的可能性。
+ **使用自动重试** – 为避免 AWS Batch 作业中断，请为作业设置自动重试。批处理作业可能由于以下任何原因而中断：返回非零的退出代码、发生服务错误或发生实例回收。您最多可以设置 10 次自动重试。首先，我们建议您至少设置 1-3 自动重试。有关跟踪 Amazon EC2 竞价型中断的信息，请参阅[竞价型中断控制面板](https://github.com/aws-samples/ec2-spot-interruption-dashboard)。

  对于 AWS Batch，如果您设置了重试参数，则作业将放在作业队列的前面。也就是说，作业被优先考虑。在 AWS CLI 中创建作业定义或提交作业时，可以配置重试策略。有关更多信息，请参阅 [提交任务](https://docs.aws.amazon.com/goto/aws-cli/batch-2016-08-10/SubmitJob       )。

  ```
  $ aws batch submit-job --job-name MyJob \
      --job-queue MyJQ \
      --job-definition MyJD \
      --retry-strategy attempts=2
  ```
+ **使用自定义重试次数** – 您可以将作业重试策略配置为特定的应用程序退出代码或实例回收。在以下示例中，如果主机导致故障，则作业最多可以重试五次。但是，如果作业由于其他原因失败，则作业将退出并将状态设置为 `FAILED`。

  ```
  "retryStrategy": {
      "attempts": 5,
      "evaluateOnExit":
      [{
          "onStatusReason" :"Host EC2*",
          "action": "RETRY"
      },{
        "onReason" : "*",
          "action": "EXIT"
      }]
  }
  ```
+ **使用竞价型中断控制面板** – 您可以使用竞价型中断控制面板来跟踪竞价型中断情况。应用程序提供有关已回收的 Amazon EC2 竞价型实例以及竞价型实例所在的可用区的指标。有关更多信息，请参阅[竞价型中断控制面板](https://github.com/aws-samples/ec2-spot-interruption-dashboard) 