1. 云服务器>阿里云 >

AWS ECS故障排查实战:遇到问题怎么查?

AWS ECS故障排查实战遇到问题怎么查

引言:容器挂了怎么办?

ECS跑应用,最怕遇到:容器起不来、服务突然中断、用户访问不了。这篇文章帮你理清排查思路,遇到问题不慌。

一、常见故障类型

ECS故障主要分几类:

容器启动失败:任务创建后一直是“Pending”或“Stopped”

健康检查失败:容器启动了,但负载均衡器认为不健康

运行时崩溃:跑着跑着突然挂了

性能问题:响应慢、CPU高、内存高

网络问题:连不上数据库、外部服务

二、排查工具准备

排查前,先熟悉这几个工具:

ECS控制台:看任务状态、事件、日志

CloudWatch Logs:看应用日志

CloudWatch Metrics:看CPU、内存指标

AWS CLI:查详细信息

三、场景一:容器启动失败

3.1 现象

任务创建后,状态一直是“Pending”,或者很快变成“Stopped”。

3.2 排查步骤

第一步:看任务事件

ECS控制台,点击任务ID,看“事件”标签。会显示失败原因,比如:

“CannotPullContainerError”:镜像拉不下来

“ResourceInitializationError”:资源不够

“Essential container in task exited”:容器启动后马上退出

第二步:看日志

如果容器启动后退出,去CloudWatch Logs看应用日志,找启动失败的原因。常见原因:

环境变量没配置

端口被占用

依赖服务连不上

代码有bug

第三步:检查镜像

确认镜像存在,标签正确。可以手动pull试试:

bash

复制下载

docker pull 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:latest

第四步:检查任务定义

确认配置正确:

CPU、内存够不够?

端口映射对不对?

环境变量有没有拼写错误?

启动命令写对了吗?

四、场景二:健康检查失败

4.1 现象

容器在运行,但负载均衡器一直显示“不健康”,流量不转发。

4.2 排查步骤

第一步:检查健康检查配置

在目标组里看健康检查配置:

路径对不对?比如应用健康检查端点是/health,配置成/就不行

端口对不对?容器暴露的是8080,健康检查端口也要8080

超时时间够不够?应用启动慢,健康检查等不到响应就超时了

第二步:手动测试健康检查

登录到ECS任务所在的容器(如果能进),或者用curl测试:

bash

复制下载

curl http://localhost:8080/health

看返回什么。如果返回非200,说明健康检查确实失败。

第三步:检查应用日志

CloudWatch Logs,应用有没有启动成功,有没有报错。

第四步:检查安全组

确认负载均衡器的安全组允许访问ECS任务的安全组,端口要开放。

五、场景三:运行时崩溃

5.1 现象

容器跑了一段时间,突然挂了,自动重启。

5.2 排查步骤

第一步:看退出码

在任务事件里看退出码。常见退出码含义:

0:正常退出

137:被kill(通常是内存不足)

143:被终止

第二步:看内存监控

CloudWatch Metrics里看任务的内存使用。如果经常达到上限,就是内存不够,任务被OOM killer杀掉。

解决方案:增加任务定义里的内存。

第三步:看应用日志

找崩溃前的日志,看有没有异常:

OutOfMemoryError

空指针异常

连接超时

第四步:检查代码

如果日志里有业务错误,那就是代码bug。修复后重新部署。

六、场景四:性能问题

6.1 现象

响应慢、CPU高、内存高。

6.2 排查步骤

第一步:看监控

CloudWatch Metrics里看CPU、内存趋势。是持续高,还是间歇性高?

第二步:看任务数量

是不是任务数太少,不够处理当前流量?如果是,增加期望任务数,或者配置自动扩缩。

第三步:看应用日志

有没有慢查询、死锁、大量异常?如果是数据库慢,考虑加索引、加缓存。

第四步:检查配置

是不是配置太小?比如CPU只配了0.25,但应用需要0.5。升级配置试试。

七、场景五:网络问题

7.1 现象

容器能启动,但连不上数据库、外部API。

7.2 排查步骤

第一步:检查安全组

确认ECS任务安全组允许出站到目标服务。数据库安全组允许来自ECS任务安全组的入站。

第二步:检查VPC

ECS任务和数据库在同一个VPC吗?不是的话,需要通过VPC对等连接或中转网关。

第三步:测试连接

如果能进容器,用telnet测试:

bash

复制下载

telnet database-host 3306

看能不能通。

第四步:检查DNS

确认数据库地址解析正确。用nslookup或dig查。

八、快速排查清单

遇到问题时,按这个清单快速过一遍:

启动失败

看任务事件

CloudWatch Logs

检查镜像是否存在

检查任务定义配置

健康检查失败

检查健康检查路径

手动curl测试

看应用日志

检查安全组

运行时崩溃

看退出码

看内存监控

看崩溃前日志

性能问题

CPU、内存监控

检查任务数量

分析慢查询

网络问题

检查安全组

telnet测试

检查DNS

九、结语

ECS故障排查不难,关键是系统化。按启动、健康检查、运行时、性能、网络这几类,一步步查。日志是最重要的线索,把日志配置好,问题就好查。平时多演练,真出问题了不慌。

如果需要更深入咨询了解可以联系全球代理上TG:jinniuge  他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。不懂找他们就对了。

 


本文由不代表本站立场,转载联系作者并注明出处。