【发布时间】:2017-01-08 07:02:16
【问题描述】:
我正在寻找有关为 ECS 任务分配内存的指导。我正在为希望尽可能降低服务器成本的客户运行 Rails 应用程序。我正在查看具有 2 个 CPU 和 4 GB 内存的中型服务器。
大多数时候,我一次只需要 1 个运行 rails 服务器的容器。但是,偶尔会出现峰值,我想扩展另一台服务器并将容器部署到它。当流量变慢时,我想缩减到单个服务器/任务。
这里是我需要帮助的地方:
我的任务记忆设置应该是什么? 4GB?那将是盒子上的总数,但不考虑系统进程。我可以做 3 GB,但那样我会浪费一些没有激情的空闲内存。 CPU 也有同样的问题……我应该让它 100% 吗?
我不想为更大的服务器付费,即 16 GB 的空间,而且大部分时间只需要 1 个容器……太浪费了。
我想要的似乎很简单。每个实例 1 个任务。当实例达到 75% 的使用率时,扩展一个新实例并将任务部署到第二个实例。我不明白为什么在一对一的情况下我必须设置任务内存和 CPU 设置。
任何人都可以指导我如何执行我所描述的操作吗?或者当与实例一对一时,正确的任务定义设置应该是什么?
感谢您的帮助。
--编辑--
根据反馈,这是一个潜在的解决方案:
任务定义 = 内存预留为 3 GB,内存为 4 GB。
Ec2 中等节点,有 4 GB
已配置 ECS 服务自动缩放:
- 当服务 CPU 利用率大于 75% 时扩大(将任务计数增加 1)。
- 当服务 CPU 利用率低于 25% 时,缩减(将任务计数减少 1)。
已配置 ECS 集群扩展: - 当集群内存利用率大于 80% 时扩大规模(将 ec2 实例计数增加 1)。 - 当集群内存利用率低于 40% 时,缩减(将 ec2 实例计数减少 1)。
示例: 从 1 个 EC2 实例开始运行具有 3 GB 预留的任务。这是 75% 的集群利用率。
当服务峰值,服务的CPU利用率跃升至75%以上时,会触发服务规模。现在任务计数增加了,新任务再次请求 3 GB,这使其总共 6 GB,但只有 4 个可用,因此集群的利用率为 150%。
这会触发集群规模(超过 80%),为新服务添加一个新的 ec2 节点到集群中。当它在那里时,我们又回到了 6GB 需求/8GB 可用,这是 75% 并且稳定。
按比例缩小也会发生同样的情况。
【问题讨论】:
标签: amazon-ecs