假设您有两个Docker容器(分别是两个微服务器),每个10 GB RAM,每个容器承受1000 rps的负载。在某些时候,你在第一个容器(微服务)上有1900 rps,在第二个微服务(容器)上有100 rps。
Docker或Docker Swarm是否足够聪明,不会浪费10 GB的RAM分配给第二个微服务(Docker容器)?
答案 0 :(得分:1)
没有设置约束,Docker只使用主机可用的内存。这将满足您的上述用例,权衡如果一个微服务突然使用15GB内存总共16GB的内存,Docker就可以了。这可能会导致问题。
要缓解OOM情况,您可以使用--memory
标记为每个正在运行的容器设置硬限制,或者使用--memory-reservation
标记设置软限制。
有关完整细分,请参阅resource constraints文档。