在 Debian(以及其他 Linux 发行版)里,ulimit 本身并不能直接限制“内存使用总量”,它只能限制某些与内存相关的资源,而且限制的是进程级别、并且有很多前提条件。
下面分点说明。
ulimit 是 shell 内建命令,用来限制单个进程能使用的资源。
和内存有关的主要有:
ulimit -v
示例:
ulimit -v 524288 # 限制为 512MB 虚拟内存
⚠️ 注意:
ulimit -s
ulimit -c
Linux 的 ulimit 没有直接限制 RSS(常驻内存)的参数
例如:
ulimit 只作用于:
它对:
如果你是想限制内存使用,常见正确做法有:
[Service]
MemoryMax=512M
MemoryHigh=400M
适用于:
示例(cgroup v2):
echo 536870912 > /sys/fs/cgroup/mygroup/memory.max
docker run -m 512m myimage
oom_score_adjDebian 的
ulimit可以限制“虚拟内存大小”,但不能限制物理内存,也不能限制用户或系统的总内存使用。
如果你能告诉我:
我可以直接给你可复制的配置示例。