已超出Docker内存限制
我有以下docker compose文件:已超出Docker内存限制,docker,docker-compose,Docker,Docker Compose,我有以下docker compose文件: 版本:“2.4” 服务: 自动检查: 图片:python 成员限额:97M 启动时运行以下python脚本: x='a'*(2*10**8) 正如预期的那样,docker失败,错误代码为137。 但是,当我设置mem_limit:98M时,错误不会再现。 知道docker为什么允许如此极端的内存限制冲突吗? 图像大小为135MB(ubuntu20+python3) (在WSL2 ubuntu上运行:20.04) 谢谢你的帮助 发生这种情况是因为me
版本:“2.4”
服务:
自动检查:
图片:python
成员限额:97M
启动时运行以下python脚本:
x='a'*(2*10**8)
正如预期的那样,docker失败,错误代码为137。但是,当我设置
mem_limit:98M
时,错误不会再现。
知道docker为什么允许如此极端的内存限制冲突吗?图像大小为135MB(ubuntu20+python3) (在WSL2 ubuntu上运行:20.04)
谢谢你的帮助 发生这种情况是因为
memswap\u limit
默认为mem\u limit
的值,这意味着您将获得mem\u limit
常规内存和另一个memswap\u limit(=mem\u limit)
交换内存,总共2倍mem\u limit
您可以将mem_limit
设置为实际所需限制的一半,也可以将memswap_limit:0M
设置为完全禁用交换
运行
/usr/bin/time --verbose python3 -c "x = 'a' * (2 * 10 ** 8)" 2>&1 1>/dev/null | grep 'Maximum resident'
在我的机器上我们可以看到
Maximum resident set size (kbytes): 203708
这个Python脚本在最高峰时使用内存。在MiB术语中,即
203708000/1024/1024~194MiB
。其中一半是~97MiB
。这就是你观察到的98-99米极限的来源~98MiB用于常规内存,~98MiB用于交换,总共~194MiB,这是~python3-c“x='a'*(2*10**8)在我的机器上98M仍然给出代码137,但99M+没有