AWS ECS 服务内存或 CPU 要求的经验法则



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

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

我有两个任务定义 -

  1. Web服务器提供html,css,JS(前端服务器)
  2. 微服务(后端服务器)
  1. 实际上以一些代表性负载运行服务。 使用像top(1) 这样的工具观看,它可以告诉你实际的内存使用情况(以top为单位,查找rssrsz列)和 CPU 利用率。 任何给定服务的资源利用率都非常依赖于语言选择、运行时、负载、并发性、算法决策、数据库约束......而且真的没有经验法则。

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

  3. 通常,托管 AWS 服务并不比在裸 EC2 实例上运行相同的服务便宜。 就 Fargate 而言,它按计划任务的 CPU 小时和 GB 小时定价。 在撰写本文时,我上面描述的假设工作量在us-east-1中每小时的成本约为 0.54 美元;对于 EC2 按需使用,3x C5.xlarge 实例每小时的费用为 0.51 美元(如果您能够承诺购买预留实例,这会更便宜)。 如果您的工作负载非常突发,则计划和取消计划 ECS 任务可能比 EC2 实例更容易,而 Fargate 定价模型可能更适合您。

  4. ECS 文档包含有关设置 CloudWatch 的教程和自动扩展组以自动扩展集群。 缩减有点棘手(您需要将实例设置为耗尽,等待任务实际移动,然后取消预配它)。

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

最新更新