/etc/security/limits.conf 和 /proc/$PID/limits 之间的区别

/etc/security/limits.conf 和 /proc/$PID/limits 之间的区别

我的配置/etc/security/limits.conf

* soft nofile 60000
* hard nofile 60000

我在ubuntu中运行nginx。重新启动ubuntu后,ulimit -n是60000,但是

cat /proc/`ps -elf | grep nginx | grep 'master process' | awk '{print $4}'`/limits| grep 'open files'

答案是1024,为什么不是60000呢?

答案1

/etc/security/limits.conf由 PAM 模块在登录时读取pam_limits.so

但是,当 nginx 在引导时启动时,它永远不会通过登录过程,因此 PAM 永远没有机会对 nginx 进程或其任何父进程进行任何 ulimit 更改。

如果您nginx是由脚本启动的,那么您应该将 ulimit 命令添加到脚本中:

ulimit -H -n 60000
ulimit -S -n 60000

如果由.service 文件nginx启动,请使用,并将此行添加到该文件的部分:systemdsystemctl edit nginx.service[Service]

LimitNOFILE=60000:60000

systemctl edit some.service将自动从树中获取原始服务文件[/usr]/lib/systemd并将修改后的版本放在下面/etc/systemd。中的任何文件/etc/systemd都将覆盖树中具有相同名称的任何文件[/usr]/lib/systemd

它还会导致服务配置自动重新加载,因此您无需systemctl daemon-reload手动使用。

相关内容