您可能有一个使用systemd的Linux发行版。
Systemd为每个用户创建一个cgroup,一个用户的所有进程都属于同一个cgroup。
Cgroups是一种Linux机制,用于设置对系统资源的限制,例如最大进程数,CPU周期,RAM使用率等。这是一个不同的,更现代的资源限制层,而不是ulimit
(使用getrlimit()
syscall)。
如果运行systemctl status user-<uid>.slice
(代表用户的cgroup),则可以看到该cgroup中允许的当前和最大任务数(进程和线程)。
$ systemctl状态用户-$ UID.slice
●user-22001.slice-UID 22001用户切片
已加载:已加载
插入:/usr/lib/systemd/system/user-.slice.d
└─10-defaults.conf
活动:活动自星期一2018-09-10 17:36:35 EEST; 1周3天前
任务:17(限制:10267)
记忆体:616.7M
默认情况下,systemd允许每个用户执行的最大任务数是“系统范围内的最大值”(sysctl kernel.threads-max
)的33%;这通常约有10,000个任务。如果要更改此限制:
在systemd v239和更高版本中,用户默认值是通过TasksMax =设置的:
/usr/lib/systemd/system/user-.slice.d/10-defaults.conf
要调整特定用户的限制(将立即应用并存储在/etc/systemd/system.control中),请运行:
systemctl [--runtime] set-property user-<uid>.slice TasksMax=<value>
systemctl edit
也可以在此处使用覆盖设备设置的常规机制(例如),但是它们将需要重新启动。例如,如果您想更改每个用户的限制,则可以创建/etc/systemd/system/user-.slice.d/15-limits.conf
。
在systemd V238和前面,用户默认经由设置UserTasksMax =在/etc/systemd/logind.conf
。更改值通常需要重新启动。
有关此的更多信息: