我试图停止 Amazon Elastic Compute Cloud(Amazon EC2)实例,但它现在卡在了“正在停止”状态。
简短描述
在以下情况下,实例似乎像是“卡”在了停止状态:
- 托管实例的底层硬件存在问题或系统状态检查失败。
- 实例状态检查失败。
- 实例出现内存不足(OOM)错误。
- 您正在尝试将实例休眠。
解决方法
(可选)检查实例状态
要检查实例的最新状态,请在 Amazon EC2 控制台中选择刷新图标。或者,在 AWS 命令行界面(AWS CLI)中运行 describe-instances 命令。
**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
在以下示例命令中,将 i-0123ab456c789d01e 替换为您在尝试停止的实例的 ID:
aws ec2 describe-instances --instance-ids i-0123ab456c789d01e --output json
检查 JSON 响应中的状态代码和名称:
"State": {
"Code": 64,
"Name": "stopping"
},
如果您的实例卡在“正在停止”状态,请执行以下操作强制停止实例:
托管实例的底层硬件出现问题或系统状态检查失败
系统状态检查失败表明托管您的 EC2 实例的硬件存在问题。必须停止然后启动实例,将实例迁移到新的运行正常的主机上。
等待 Amazon EC2 对您的实例执行停止和启动操作。或者,您可以强制停止实例。有关强制停止的说明,请参阅以下“强制停止实例”部分。
有关详细信息,请参阅我的 EC2 Linux 实例未通过系统状态检查。如何解决此问题?
实例状态检查失败
如果实例状态检查失败,由于正在运行的关闭脚本,实例似乎像是卡在了“正在停止”状态。或者,使用 StopInstances API 停止以使用救援实例进行故障排除的实例似乎像是卡住了。这是因为由于无法访问该实例,StopInstances 操作可能需要一点时间。
在这些情况下,实例最终会停止。或者,您可以强制停止实例。有关强制停止的说明,请参阅以下强制停止实例部分。
实例上的 OOM 错误
检查实例的控制台日志,了解是否有 OOM 错误。有关详细信息,请参阅为什么我的 EC2 Linux 实例因为资源过度使用而变得无响应?
休眠过程中的实例
如果实例在休眠期间似乎卡在了“正在停止”状态,您可以强制停止该实例。有关强制停止的说明,请参阅以下强制停止实例部分。
有关详细信息,请参阅解决休眠问题。
强制停止实例
如果您的实例卡在了“正在停止”状态,您可以强制停止实例:
使用 Amazon EC2 控制台
- 打开 Amazon EC2 控制台。
- 选择实例,然后选择卡住的实例。
- 依次选择实例状态、强制停止实例、停止。请注意,只有当实例处于正在停止状态时,控制台中才会显示强制停止实例。如果您的实例处于其他状态(正在关闭和已终止除外),可以使用 AWS CLI 强制停止实例。
使用 AWS CLI
按以下示例所示,使用 stop-instances 命令和 --force 选项:
aws ec2 stop-instances --instance-ids i-0123ab456c789d01e --force
其他资源
如果前面的解决步骤不能解决问题,请在 AWS re:Post 上发布帮助请求。为了加快解决问题的速度,请提供实例 ID,并说明您已采取的步骤。
有关详细信息,请参阅解决停止实例时出现的问题。