在 Debian(以及其他 Linux 发行版)里,ulimit 和内存是有关的,但要看你说的是“哪一类内存”以及“在哪个层面”。
下面分点说明。
ulimit 是 shell 内建命令,用来限制当前 shell 及其子进程可用的资源。
和内存有关的常见限制有:
ulimit -v
例如:
ulimit -v 1048576 # 限制为 1GB 虚拟内存
ulimit -s
ulimit -d
⚠️ 一个关键点:
ulimit 限制的是虚拟内存,不是 RSS(物理内存)
所以:
ulimit -v 512M这对:
| 项目 | 说明 |
|---|---|
ulimit |
用户/进程级限制 |
/proc/meminfo |
系统实际内存 |
| cgroup / systemd | 容器/服务级限制 |
| swap | 内核管理 |
ulimit 不能限制整个系统内存使用
ulimit -v 2097152
/etc/security/limits.conf
示例:
www-data soft as 2097152
www-data hard as 2097152
(as = address space ≈ 虚拟内存)
⚠️ 需要:
❌ “ulimit 能防止 OOM”
❌ “ulimit -m 能限制物理内存”
-m(RSS)在 Linux 上基本不生效Debian 的 ulimit 和内存有关,但主要限制的是“虚拟内存”,不是物理内存,也不是系统总内存。
如果你愿意,可以告诉我:
我可以给你更具体的配置建议。