我是否需要为系统服务设置 ulimit,例如 nginx.service(systemd)/nginx(sysv)?

我是否需要为系统服务设置 ulimit,例如 nginx.service(systemd)/nginx(sysv)?

我知道,当我们在大型网站的 shell 中运行应用程序时,我们最好为 shell 设置 ulimit,

但大部分服务是由systemd/sysv启动的。

我需要在服务脚本(/etc/init.d)中设置 ulimit 吗?

答案1

您通常会在服务运行的用户上设置 ulimit,如下所示/etc/security/limits.conf

例如,如果 Web 服务作为 运行www-data,您将添加一个条目来www-data设置/etc/security/limits.conf相关限制。

如果进程运行,root那么它会更复杂,因为限制/etc/security/limits.conf将适用于所有root拥有的进程。

设置限制的一个问题/etc/security/limits.conf是它依赖于通过 PAM 堆栈的进程。

如果服务和守护进程不这样做,那么修改相关的服务脚本是一种可以接受的方法。可能有必要在每个进程的基础上执行此操作,并且根据您的发行版,服务启动脚本通常是包管理的,这意味着每次升级时都会遇到冲突。

相关内容