2

我有一个 ECS 服务,它使用多个任务来执行日常工作。每个任务使用的内存取决于它处理的数据。我在所有任务中都设置为 16GB Ram,但有些任务因以下错误“OutOfMemory”而停止。

不幸的是,我无法分解每个任务处理的数据,因为它必须一起处理才能产生我想要的见解。

我知道如何为 RAM 和 CPU 的 ECS 服务设置警报。但是服务的 RAM 和 CPU 是指所有任务的 CPU 和 RAM 的平均值。

如何设置警报以便在任务内存不足时触发?有没有建议的方法来不遇到 OutOfMemory 错误?

4

1 回答 1

1

我相信您必须启用ECS CloudWatch Container Insights才能获得每个任务和每个容器的内存使用情况。执行此操作后,您将开始在 CloudWatch 中查看任务内存使用情况(以及其他内容)的指标,您可以为其创建警报。

请注意,启用 Container Insights 会产生额外的成本。


有没有建议的方法来不遇到 OutOfMemory 错误?

从基础架构的角度来看,您所能做的就是开始为您的任务配置更多 RAM。

从应用程序的角度来看,您可以分析您的应用程序是否存在内存泄漏,并检查您的应用程序在内存中创建的数据结构以寻找可能的机会,例如减少内存中的重复数据,或将一些数据移动到磁盘或分布式缓存。这种内存优化工作是非常特定于应用程序的。

于 2021-08-02T17:49:25.583 回答