首页 > 解决方案 > AWS ECS 服务内存或 CPU 要求的经验法则

问题描述

我正在使用 AWS ECS 部署我的网站。现在我想知道——

  1. 是否有任何经验法则或任何方法来确定服务的内存或 CPU 大小?
  2. 或者有什么方法可以确定集群的EC2系列实例?
  3. 使用 Fargate 而不是 EC2 是否更好地节省成本?
  4. 在 AWS ECS 中使用自动缩放的更好方法是什么?

我有两个任务定义 -

  1. 提供 html、css、JS 的 Web 服务器(前端服务器)
  2. 微服务(后端服务器)

标签: amazon-web-servicesdockeramazon-ecs

解决方案


  1. 实际运行具有一些代表性负载的服务。使用top (1) 之类的工具进行观察,它可以告诉您实际内存使用情况(在 中top,查找rssrsz列)和 CPU 利用率。任何给定服务的资源利用率都非常依赖于语言选择、​​运行时、负载、并发性、算法决策、数据库约束……而且确实没有经验法则。

  2. 匹配您实际测量的资源利用率、一些假设的部署计划和AWS EC2 实例类型列表。如果您有 4 个服务,每个服务需要 1 个完整的 CPU 内核和 1 GB 的 RAM,并且您希望每个服务运行 3 个副本,那么您总共需要 12 个内核和 12 GB 的 RAM;如果您希望将其分布在 3 个主机上,则 3x c5.xlarge 实例可为您提供 12 个内核和 24 GB 的 RAM。

  3. 一般来说,托管的 AWS 服务并不比自己在裸 EC2 实例上运行相同的服务便宜。对于 Fargate,它CPU 小时和 GB 小时计费,用于计划任务。在撰写本文时,我上面描述的假设工作量将花费大约 0.54 美元/小时us-east-1;对于EC2 按需使用,3 个 c5.xlarge 实例的费用为每小时 0.51 美元(如果您能够承诺购买预留实例,这将变得更便宜)。如果您的工作负载非常突发,则调度和取消调度 ECS 任务可能比 EC2 实例更容易,并且 Fargate 定价模型可能更适合您。

  4. ECS 文档有一个关于设置 CloudWatch 和自动扩展组以自动扩展集群的教程。缩小规模有点棘手(您需要将实例设置为 drain,等待任务实际移动,然后取消配置它)。

  5. 如果您处于全 AWS 环境中,请考虑直接在 S3 中托管静态内容。这可能比运行专用服务器更便宜且更易于管理。


推荐阅读