Bootstrap

Docker内存限制

http://blog.csdn.net/s1070/article/details/52301410

1.0 测试工具

     stress

1.1 内存限制选项

  • -m--memory=""
    • Memory limit (format: <number>[<unit>]). Number is a positive integer. Unit can be one of bkm, or g. Minimum is 4M.
  • --memory-swap=""
    • Total memory limit (memory + swap, format: <number>[<unit>]). Number is a positive integer. Unit can be one of bkm, or g.

 

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 

stress: WARN: [24] (418) now reaping child worker processes

 stress: FAIL: [24] (452) failed run completed in 3s

 

  如果在k8s中对容器限制内存,那么在运行时,pod内的容器超出限制后会自动重启。

;