Systemd LimitNOFILE 上限为 4096

Systemd LimitNOFILE 上限为 4096

我有一个带有 set 的 systemd 用户服务LimitNOFILE。该值一直受到尊重,直到达到 4096。在那之后,它的上限为 4096。我也尝试过DefaultLimitNOFILE增加/etc/systemd/user.conf.

它在 limit.conf 中设置正确,适用于开箱即用的新 shell。不过,我听说 systemd 并不关心该文件。可能是什么问题呢?

答案1

迟到的答复; limits.conf当 systemd 运行时不使用(limits.conf适用于非 systemd 系统)。

您真正想要的文件是;/etc/systemd/system.conf- 这是全局配置。然后你就可以/etc/systemd/user.conf- 这指定了进一步的每用户限制。

具体针对您的情况;即使您配置了user.conf更高的限制,这也是无效的,因为 in 的限制system.conf较低,并且充当 in 的限制上限user.conf

奥_奥

答案2

man systemd.exec

对于系统单元,可以自由选择这些资源限制。然而,对于用户单元(即由 systemd(1) 的每用户实例运行的单元),这些限制受到操作系统强制执行的(可能更具限制性)每用户限制的约束。

您的系统可能配置了每个进程 4096 个打开文件的硬限制。如果 systemd 允许你绕过这个限制,就会出现一个漏洞。

答案3

这可能与 240 版本之前的 systemd 有关:

看:https://github.com/systemd/systemd/blob/main/NEWS

240 的变化:...

  • Linux 内核当前对用户空间进程的默认 RLIMIT_NOFILE 资源限制设置为 1024(软)和 4096(硬)。以前,systemd 将其未经修改地传递给它分叉的所有进程。在此 systemd 版本中,systemd 传递的硬限制增加到 512K,覆盖内核的默认设置,并大幅增加非特权用户空间进程可以分配的并发文件描述符的数量...

所以尝试将你的systemd升级到版本240或更高版本

相关内容