Jon*_*Sud 5 nginx amazon-ecs node.js docker
我想在 aws ecs 中创建一个任务定义。
在conatiner中运行nginx需要多少内存和CPU?和另一个容器中的nodejs?
nginx - 只是一个从 80 到 3000 的代理。
nodejs - 调用 atlas mongodb 的简单服务
在 ECS 中运行容器时,我永远不会推荐硬内存限制。
此外,您无法确定容器空闲状态的内存,因此最好查看 Nginx 的一些基准测试,而节点内存因应用程序而异,而且糟糕的代码可能比良好的托管应用程序消耗更多的内存。
NGINX 使用 1 个工作线程、15% 的 CPU 和 1MB 内存来处理每秒 11,500 个请求。
现在根据您的流量 EXPECTED_REQUST/11500 = Required memory
尽管Nodejs的内存非常关键并且完全取决于您的代码,如果应用程序没有正确关闭文件或请求,它会比预期更快地达到最大内存,因此请保留内存。
内存预留
为容器保留的内存的软限制(以 MiB 为单位)。当系统内存争用时,Docker 会尝试将容器内存保持在这个软限制;但是,您的容器可以在需要时消耗更多内存
例如,如果您的容器通常使用128 MiB 的内存,但偶尔会在短时间内爆发到256 MiB 的内存,您可以将 a 设置
memoryReservation为 128 MiB,并将内存硬限制设置为 300 MiB。这种配置将允许容器仅从容器实例上的剩余资源中保留 128 MiB 的内存,但也允许容器在需要时消耗更多的内存资源。
所以最好不要设置所谓的硬限制memory。
要呈现给容器的内存量(以 MiB 为单位)。如果您的容器尝试超过此处指定的内存,则该容器将被杀死。为任务中的所有容器保留的内存总量必须低于任务内存值(如果指定了一个值)。
确定这一点的最简单方法是凭经验使用docker stats- 因为所利用的资源与您的应用程序每秒接收的请求成正比。
在空闲时,两个容器都需要大约 10MB 的内存和大约 0 个 CPU 使用率 :)
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
4be92e1cd6bf elastic_germain 0.00% 6.68MiB / 15.65GiB 0.04% 5.68kB / 0B 0B / 0B 11
7c5552053782 modest_black 0.00% 4.543MiB / 15.65GiB 0.03% 6.37kB / 0B 0B / 8.19kB 2
Run Code Online (Sandbox Code Playgroud)
nginx 的大小不应超过 128MB,除非您打算启用内容缓存。
至于节点容器,512MB应该绰绰有余。
这些值与应用程序应接收的实际流量相关:如果预期流量未知或模糊猜测,则尝试提前预测这些数字只是一种有根据的猜测。
好消息是最大理论限制与主机的内核调度程序允许的一样多。无状态应用程序可以超越这一点,使用水平扩展,跨多个 docker 节点。
| 归档时间: |
|
| 查看次数: |
3205 次 |
| 最近记录: |