【发布时间】:2017-07-21 09:10:41
【问题描述】:
我正在运行 systemd 版本 219。 root@EVOvPTX1_RE0-re0:/var/log# systemctl --version 系统 219 +PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN
我有一个服务,我们称之为 foo.service,它有以下内容。
[服务] 内存限制=1G
我故意添加代码来分配 1M 内存 4096 次导致 接收到某个事件时分配 4G 内存。这个想法是,之后 该进程消耗 1G 的地址空间,内存分配将开始失败。 然而,情况似乎并非如此。我可以分配4G内存 没有任何问题。这告诉我在 服务文件未强制执行。
谁能告诉我我错过了什么?
我查看了 proc 文件系统 - 名为 limits 的文件。这表明 Max address space is Unlimited,这也确认了内存限制 没有得到强制执行。
【问题讨论】:
-
您是否在 systemd 的用户实例中运行此服务?
-
systemd 使用 cgroups 来强制执行限制,因此您不会通过
ulimit或在 proc 中看到任何内容。
标签: systemd