我知道,当我们在大型网站的 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 堆栈的进程。
如果服务和守护进程不这样做,那么修改相关的服务脚本是一种可以接受的方法。可能有必要在每个进程的基础上执行此操作,并且根据您的发行版,服务启动脚本通常是包管理的,这意味着每次升级时都会遇到冲突。