我正在运行 Ubuntu Server。这是我所做的:
/etc/security/limits.conf:
* soft nofile 10240
* hard nofile 10240
并在 /etc/pam.d/common-session 中添加:
session required pam_limits.so
以及 nginx conf 本身 /etc/nginx/nginx.conf
user www-data;
worker_processes 1; #I have only 1 core
pid /run/nginx.pid;
events {
worker_connections 10240;
# multi_accept on;
}
worker_rlimit_nofile 10240;
但尝试确认变化:
root@ubuntu_ngix:~# ulimit -Hn
4096
root@ubuntu_ngix:~# ulimit -Sn
1024
我已经重启了 nginx 和服务器,但仍然没有任何反应。我到底做错了什么?
我以 www-data 用户身份运行 nginx。
答案1
该配置/etc/security/limits.conf
特定于聚丙烯酰胺。聚丙烯酰胺,一般来说,不被软件使用管理服务例如nginx。
所以一切从在里面, 到暴发户, 到systemdlimits.conf
根本不要使用。
nginx
具有用于增加文件描述符限制的特定配置设置worker_rlimit_nofile。
在所有配置块外面(不是 inhttp
或 a server
)添加:
worker_rlimit_nofile 10240
答案2
检查 的权限/etc/security/limits.conf
。它应该是所有人都可读的(模式 0644)。
我花了很多时间试图弄清楚为什么限制之前不会生效。