我打算将我的网络应用程序从 Amazon EC2 迁移到 ECS。 (docker) 但在ECS中,我们需要为进程分配内存和vCPU。
但我不确定应该为该任务分配多少 vCPU。 (还有内存)
我如何衡量一个进程需要多少 vCPU 和内存?
谢谢
最佳答案
当谈到您的任务定义时,有两种指定内存的方法。内存设置是一个硬限制。如果容器内存使用量达到此数量,容器将被终止。另一方面,如果您指定 memoryReservation,将为任务保留那么多内存,但它可以使用更多,最多为机器的总量。查看Task Definition documentation了解更多详情。
这里的一个重要考虑是只需要 memory
和 memoryReservation
之一。如果两者都使用,memoryReservation
应该小于 memory
。如果您只打算指定其中之一,我建议您使用 memoryReservation
,因为它将允许您的任务使用机器上的总内存。如果两者都使用,memoryReservation
将用于计算任务消耗的内存量。
至于cpu
,这个值不是必需的,如果没有指定,一个实例上的所有任务都允许使用系统上可用的 CPU 的相等部分。如果实例上只有一个任务,默认情况下它可以使用实例的整个CPU。
为了更具体一点,1vCPU/1GB Mem EC2 在 ECS 上等于 1024。
可以肯定地说,您的服务将使用与在 EC2 上大致相同的 CPU/内存。您可以登录到您的 EC2 实例并使用各种工具(htop、ps、...)进行检查,或者在 CloudWatch 上进行检查.
例子: 如果您当前的应用程序在 t2.medium(具有 2 个 vCPU 和 4GB 内存)上运行并且仅使用一半的 cpu/内存,那么您的任务将使用 1024 个 CPU 和 2048 个内存。
关于linux - 我们如何测量 Amazon ECS/Ec2 实例的 vCPU 使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50402916/