我们有一个带有 Nginx(1.18)的 Ubuntu 服务器(22.04)。
ulimit -n
返回1024并且在/etc/nginx/nginx.conf中有以下设置:
user www-data;
worker_processes auto;
events {
worker_connections 1024;
}
我们阅读了一些有关“优化 Nginx”、文件描述符、worker_connections 等的文档和各种博客。例如:https://docs.nginx.com/nginx-management-suite/admin-guides/configuration /配置网关/
您可能还想调整进程可以打开的最大文件描述符数量 (worker_rlimit_nofile),以与工作连接数量保持一致。请注意,rlimit_nofile 是系统设置,因此请务必检查 Linux 发行版的用户限制,因为这些限制可能更加严格。
假设我们需要将工作连接数增加一倍,从1024增加到2048。如果我们要修改配置(并重新启动 nginx):
user www-data;
worker_processes auto;
worker_rlimit_nofile 2048; // <<< added
events {
worker_connections 2048; // <<< changed
}
ulimit -n
考虑到返回1024就足够了吗?或者这些更改还不够,不会产生效果,需要通过运行以下命令来增加系统对文件描述符的软限制:
ulimit -n 2048
或者将以下行添加到 shell 配置文件 (例如 /etc/security/limits.conf):
www-data soft nofile 2048
www-data hard nofile 2048
(不确定这是否就是全部,或者是否还有一些配置文件需要修改)
就我而言 [
Ubuntu server (22.04) with Nginx (1.18)
] 不需要进行额外的更改。所以我只需要更新/etc/nginx/nginx.conf:然后重新加载nginx,就这样了。
为了确保情况确实如此:
找到 nginx工作进程的 PID (工作进程可以有多个,取谁的 PID 无所谓):
然后:
并查看的值
Max open files
:如果它与 nginx 配置中的值相同worker_rlimit_nofile
- 就是这样。然而,在某些情况下,简单地设置并重新加载 nginx 可能是
worker_rlimit_nofile
不够的,即不会有任何效果。正如 Nginx 文档中所述: