AWS re:Post Knowledge Center Feedback Survey
Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
我在 Amazon Elastic Cloud Compute (Amazon EC2) 上运行的 Amazon Elastic Container Service (Amazon ECS) 容器实例被意外终止。
要确定实例终止的原因,请查看 AWS CloudTrail 事件中的 TerminateInstances API 调用。在事件详细信息中,记下调用 API 的 AWS Identity and Access Management (IAM) 用户或角色的 userAgent 值。此外,记下 SourceIPaddress、eventTime、errorCode 和 errorMessage 的值。
根据实例终止问题的原因,执行以下故障排除操作。
查看已终止实例的 Amazon CloudWatch 指标 CPUUtilization 和 StatusCheckFailed_Instance。异常可能表明存在性能问题或硬件故障。有关详细信息,请参阅 Amazon EC2 实例的状态检查。如果您已激活 CloudWatch Container Insights,则还需查看 Container Insights 指标。
查看实例日志,以了解您的实例是否存在网络连接、内存不足或其他潜在问题。高资源使用率可能会导致实例终止问题。根据您的工作负载需求调整容器实例类型的大小。
查看您的 Amazon EC2 Auto Scaling 组活动历史记录,以检查计划的 EC2 Auto Scaling 事件是否终止了该实例。如果您遇到意外的自动扩缩操作,请检查您的自动扩缩配置、扩缩策略和阈值。
为避免实例意外终止,请使用托管终止保护,以保留正在运行任务的 Amazon ECS 容器实例。
您还可以为您的实例激活终止保护,以防止意外终止。如果您已激活终止保护但仍遇到问题,请参阅如何解决 Amazon ECS 中容量提供商的托管终止保护设置错误?
如果您的集群使用竞价型实例,请检查竞价型实例被终止或中断的原因。确定 Amazon EC2 是否终止了竞价型实例。如果 Amazon EC2 会中断您的竞价型实例,则您将在中断前 2 分钟收到通知。
对于具有不可中断的关键工作负载的应用程序,最佳做法是使用按需型实例。
创建 CloudWatch 警报,以监控实例何时自动停止、终止、重启或恢复,从而主动识别问题。此外,针对重要指标(例如 CPUUtilization、DiskReadOps、DiskWriteOps、NetworkIn 或 NetworkOut)创建 CloudWatch 警报。
使用 Amazon Simple Notification Service (Amazon SNS) 和 Amazon EventBridge 来接收有关实例状态变化的警报,例如停止、终止和运行状况检查失败。您还可以创建警报,以便在实例状态更改时发送电子邮件。
要在集群级别、实例级别、服务级别和任务级别收集指标,请设置 Container Insights。
使用任务放置策略(例如 spread(分散)任务和 binpack(装箱)任务),以避免在单个实例上集中过多任务。
此外,请将您的容器实例分散到多个可用区,以减少实例意外终止的影响。有关详细信息,请参阅 Amazon ECS availability best practices。