http://blog.csdn.net/s1070/article/details/52301410
1.0 测试工具
1.1 内存限制选项
-m
,--memory=""
- Memory limit (format:
<number>[<unit>]
). Number is a positive integer. Unit can be one ofb
,k
,m
, org
. Minimum is 4M.
- Memory limit (format:
--memory-swap=""
- Total memory limit (memory + swap, format:
<number>[<unit>]
). Number is a positive integer. Unit can be one ofb
,k
,m
, org
.
- Total memory limit (memory + swap, format:
1.2 示例
docker run -it --rm -m 100M --memory-swap -1 ubuntu-stress:latest /bin/bash |
---|
指定限制内存大小并且设置 memory-swap 值为 -1,表示容器程序使用内存受限,而 swap 空间使用不受限制(宿主 swap 支持使用多少则容器即可使用多少。如果 --memory-swap
设置小于 --memory
则设置不生效,使用默认设置)。
docker run -it --rm -m 100M ubuntu-stress:latest /bin/bash |
---|
如果不添加--memory-swap选项,则表示容器中程序可以使用100M内存和100Mswap内存,默认情况下,--memory-swap
会被设置成 memory 的 2倍。-m 为物理内存上限,而 --memory-swap 则是 memory + swap 之和,当压测值是 --memory-swap 上限时,则容器中的进程会被直接 OOM kill。
例如运行容器
Docker run -it -m 100M --memory-swap 400M ubuntu-stress:latest /bin/bash 压测几秒钟后超出内存限制kill掉进程
root@5ed1fd88a1aa:/# stress --vm 1 --vm-bytes 400M # 压测到 400M 程序会被 kill
stress: info: [24] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: FAIL: [24] (416) <-- worker 25 got signal 9
stress: WARN: [24] (418) now reaping child worker processes
stress: FAIL: [24] (452) failed run completed in 3s
如果在k8s中对容器限制内存,那么在运行时,pod内的容器超出限制后会自动重启。