跳至内容

如何监控 ECS 任务和服务中的高资源使用率?

1 分钟阅读
0

当我在 Amazon Elastic Container Service (Amazon ECS) 上运行应用程序时,我的资源使用率很高。

解决方案

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

监控关键指标

使用 Amazon CloudWatch 跟踪 ECS 服务级别指标。要获得更详细的资源使用信息,请开启 Container Insights具有增强可观测性的 Container Insights 并检查 CPU 利用率和内存使用率指标

分析 CloudWatch 日志

运行示例查询,分析日志中是否存在高资源使用率、内存不足 (OOM) 事件或应用程序错误。根据您发现的问题优化任务定义。有关详细信息,请参阅使用 CloudWatch Logs Insights 分析日志数据

要检查内存利用率,请运行以下查询:

stats avg(MemoryUtilized) by bin (30m) as period, TaskDefinitionFamily, TaskDefinitionRevision
| filter Type = "Task" | sort period desc, TaskDefinitionFamily | limit 10

对任务意外停止进行故障排除

如果您的 ECS 任务意外停止,请使用 DescribeTasks API 检查 stoppedReason 和容器的 exitCode 以确定原因。有关详细信息,请参阅为什么我的 Amazon ECS 任务停止了?

使用 ECS Exec

使用 AWS CLI 中的 ECS Exec 在容器内运行命令以查看资源使用信息。

对潜在问题进行故障排除

对于内存泄漏,请检查应用程序日志和进程以确定泄漏的来源。

如果 CPU 使用率较高,请增加任务 CPU 分配或升级到更大的实例类型。

对于磁盘空间问题,请运行以下命令来识别大于 50 MB 的文件:

find / -type f -size +50000k -exec ls -lh {} \; 2>/dev/null

要增加您的磁盘空间,请参阅如何在 AWS Fargate 上增加我的 Amazon ECS 容器的磁盘空间?

执行测试并优化资源分配

要确定应用程序的最佳资源分配,请使用工具执行测试。然后,根据结果更新任务定义和服务配置。根据您的使用模式修改任务定义中的 CPU 和内存容量。使用应用程序自动扩缩高效管理不断变化的工作负载。

检查实例容量

确保您的容器实例有足够的资源来执行任务。使用容量提供商自动调整您的集群容量。

设置 CloudWatch 警报

为 CPU 利用率、内存使用率和应用程序错误率等指标创建警报。配置通知以在超过阈值时提醒您。

相关信息

如何将 Amazon EFS 文件系统挂载到 Amazon ECS 容器上或 AWS Fargate 上运行的任务中?

Container Insights with enhanced observability now available in Amazon ECS

Amazon ECS CloudWatch 指标

使用 CloudWatch 监控 Amazon ECS

AWS 官方已更新 9 个月前