SystemD“任务”和 nproc 值有什么区别?
我们看到了一个服务崩溃的问题,因为当前任务的数量超过了 TasksMax (512) 的 Systemd 默认值。但是我们已经设置LimitNPROC=infinity
好了,所以我们很惊讶服务被限制在 512。
我们通过设置解决了问题
TasksMax=infinity
什么时候应该使用一种而不是另一种TasksMax
?LimitNPROC
SystemD“任务”和 nproc 值有什么区别?
我们看到了一个服务崩溃的问题,因为当前任务的数量超过了 TasksMax (512) 的 Systemd 默认值。但是我们已经设置LimitNPROC=infinity
好了,所以我们很惊讶服务被限制在 512。
我们通过设置解决了问题
TasksMax=infinity
什么时候应该使用一种而不是另一种TasksMax
?LimitNPROC
LimitNProc=
是一个 rlimit(这些也称为 ulimit)。“有关资源限制概念的详细信息,请参见 setrlimit(2)...请注意,使用这些选项配置的大多数进程资源限制是针对每个进程的,并且进程可能会分叉以获取一组新的资源,这些资源独立于原始过程,因此可能会逃脱设定的限制。” 这记录在man systemd.exec
.RLIMIT_NPROC
是这句话的例外之一;它限制了“真实用户 ID”(UID)的进程数。TasksMax=
记录在更具体的man systemd.resource-control
中,作为“依赖 Linux 控制组 (cgroups) 内核概念来组织进程”的选项之一。所有这些限制都适用于为 systemd 服务创建的 cgroup。不能通过简单地分叉一个新进程来逃避 cgroups。TasksMax=
对我来说更有意义。我不知道你为什么要使用LimitNProc=
.