如何衡量Docker中的性能?
在Docker中可能存在性能问题吗?
因为我知道VM的,你必须指定你想要使用多lessRAM
但我不知道在docker。 它正在运行。 它会自动使用RAM所需要的,或者这是如何工作的?
它会自动使用RAM所需要的,或者这是如何工作的?
不,默认情况下,它将使用所需的最小内存,达到极限。
您可以使用docker stats
来查看它在正在运行的容器中:
$ docker stats redis1 redis2 CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O redis1 0.07% 796 KB / 64 MB 1.21% 788 B / 648 B 3.568 MB / 512 KB redis2 0.07% 2.746 MB / 64 MB 4.29% 1.266 KB / 648 B 12.4 MB / 0 B
在使用docker run
,可以使用运行时限制资源来指定这些限制。
这包括RAM:
-m, --memory=""
内存限制(格式:
<number>[<unit>]
,其中unit = b,k,m或g)在正常情况下,容器可以根据需要使用尽可能多的内存,并且仅受限于使用
-m/--memory
选项设置的硬限制 。
当设置了内存预留时,Docker将检测内存争用或内存不足,并迫使容器限制其使用量达到预留限制。默认情况下,如果发生内存不足(OOM)错误,内核将杀死容器中的进程 。
要更改此行为,请使用--oom-kill-disable
选项。 只有在您还设置了-m/--memory
选项的容器上禁用OOM杀手。
注意:即将到来的(1.10) docker update命令可能包含dynamic内存更改。 请参阅docker update
。
默认情况下,docker容器的主机资源量不受限制。 容器的权限有限(这就是“容器”部分)。
您应该始终在容器上设置约束,例如容器允许使用的最大内存量,交换空间量以及CPU数量。 不设置这样的限制可能会导致主机内存不足,内核会消除随机进程(OOM kill),释放内存。 在这种情况下,“Random”也意味着内核会杀死你的ssh服务器,或者docker守护进程本身。
阅读有关在手册中限制资源的运行时限制容器上资源的更多信息。