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

时间:2019-06-09 11:52:15

标签: amazon-web-services docker amazon-ecs

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

  1. 是否有经验法则或任何方法确定服务的内存或cpu大小?
  2. 或者通过任何方法确定集群的EC2家族实例?
  3. 使用Fargate over EC2更好地节省成本吗?
  4. 在AWS ECS中使用自动缩放的更好方法是什么?

我有两个任务定义-

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

1 个答案:

答案 0 :(得分:3)

  1. 实际上以一定的代表性负载运行服务。使用诸如 top (1)之类的工具进行监视,该工具可以告诉您实际的内存使用情况(在top中,查找rssrsz列)和CPU利用率。任何给定服务的资源利用率都非常依赖于语言选择,运行时,负载,并发性,算法决策,数据库约束等等。

  2. 匹配您实际测得的资源利用率,一些假设的部署计划以及AWS EC2 instance types listing。如果您有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小时为priced。在撰写本文时,我上述的假设工作负荷在us-east-1中每小时的费用约为0.54美元;对于EC2 on-demand usage,3x c5.xlarge实例的价格为每小时US $ 0.51(如果您能够承诺购买预留实例,则价格会便宜一些)。如果您的工作量非常繁琐,则与EC2实例相比,安排和取消安排ECS任务可能会更容易,并且Fargate定价模型可能更适合您。

  4. ECS文档包含a tutorial on setting up CloudWatch and an auto-scaling group to automatically expand a cluster。缩小比例会比较棘手(您需要set the instance to drain,等待任务实际移动,然后取消配置)。

  5. 如果您仍然处于全AWS环境中,请考虑使用hosting static content directly in S3。与运行专用服务器相比,这可能更便宜,更易于管理。