1.指定 Nginx 工作进程(worker process)运行时所使用的系统用户 ,核心作用是权限控制与安全隔离。


2.验证与重载
nginx -t:对 /usr/local/nginx/conf/nginx.conf 进行语法检查,验证配置是否合法
nginx -s reload:向 Nginx 主进程(master process)发送重载信号,使其重新加载配置文件。
ps aux | grep nginx:验证进程状态,确认 Nginx 在以预期的用户和模式运行。
3.对 Nginx 进行 进程数与 CPU 亲和性优化



将 worker_processes 从 2 改为 auto,让 Nginx 自动适配 4 核 CPU。添加 worker_cpu_affinity 配置,将 4 个 worker 进程分别绑定到 4 个核心。

关机修改配置后再开启

验证:每个进程都以 nginx 用户身份运行。
验证 Nginx 的 worker 进程是否按照预期被绑定到了对应的 CPU 核心上

4.提升高并发场景下的处理能力和效率
4.1.在 events 块中调优参数,保存退出后平滑重启 Nginx 服务

- worker_connections 10000:定义每个 worker 进程能同时处理的最大连接数(包括客户端连接和后端连接)。这里设置为 10000,意味着在 4 个 worker 进程的情况下,理论上最大并发连接数可达 40000,大幅提升了服务的并发承载能力。
- use epoll :指定 Nginx 使用
epoll作为事件驱动模型。epoll是 Linux 下高效的 I/O 多路复用技术,相比传统的select/poll,它在处理大量并发连接时,性能不会随连接数增加而线性下降,是高并发 Web 服务的首选。 - accept_mutex on:开启 "互斥锁" 机制,防止多个 worker 进程在处理新连接时产生 "惊群"(thundering herd)问题。它确保同一时间只有一个 worker 进程去 accept 新连接,避免了不必要的上下文切换和资源竞争。
- multi_accept on:允许 worker 进程在一次事件循环中,接受所有新到达的连接请求,而不是逐个处理。这可以显著提升在连接爆发时的处理效率,减少了多次系统调用的开销。

4.2.测试并发:
遇到系统限制的情况

socket: Too many open files (24):并发数量过多导致访问失败
- 在 Linux 中,每个网络连接(socket)都对应一个文件句柄。
- 当你尝试发起 5000 个并发连接时,系统为每个连接分配句柄,但当前用户(或进程)的最大文件句柄数限制(
ulimit -n)远小于 5000,导致无法创建新的 socket 连接,测试失败。
4.3.处理本地文件系统的并发文件数量:

/etc/security/limits.conf 是 Linux 中用于配置用户级资源限制的核心文件,通过它可以调整不同用户能使用的最大文件句柄数、最大进程数等关键资源,突破系统默认的低限制,适配高并发服务需求

|------------------------|--------------------------------------------------------------------|-------------------------------------------------|
| * - nofile 100000 | 对所有用户 (*),同时设置软限制和硬限制(-),将最大文件句柄数 (nofile)提升至 100000 | 解决 ab 压测和 Nginx 高并发时的文件句柄不足问题(每个网络连接对应一个文件句柄) |
| root - nofile 100000 | 对 root 用户单独设置,最大文件句柄数同样为 100000 | 确保 root 启动的 Nginx 主进程及压测工具(ab)不受文件句柄限制 |
| root - nproc 100000 | 对 root 用户 ,将最大进程数 (nproc)提升至 100000 | 避免高并发下 Nginx 或其他进程因进程数达到上限而无法创建新进程 |

-
sudo -u nginx ulimit -n- 作用:以
nginx用户的身份,查看其最大文件句柄数限制。 - 输出
100000:说明nginx用户的限制已经成功提升到了 100000,这保证了 Nginx 的 worker 进程在处理大量并发连接时不会因为句柄不足而报错。
- 作用:以
-
ulimit -n 100000- 作用:在当前 root 用户的 shell 会话中,将最大文件句柄数临时设置为 100000。
- 输出
100000:说明当前 root 用户的限制也已经是 100000,这保证了你在 root 下执行的ab压测工具能够发起足够多的并发连接,不会再出现Too many open files的错误。 - 如果没有输出,可以用 ulimit -n 测试输出是多少,如果是100000就说明临时提升已经生效
4.4.测试

显示Completed 10000/20000/30000/40000/50000 requests,说明Nginx 服务已具备高并发承载能力:
- 环境问题已解决 :不再出现
Too many open files报错,证明你之前的ulimit临时调整、limits.conf配置及 Nginx 调优全部生效。 - 测试正常推进 :压测工具
ab正在稳定向 Nginx 发送请求,Nginx 能承载 1 万并发的压力,正在持续处理请求。 - 进程未中断:系统资源(CPU、内存、文件句柄)足以支撑当前的高并发负载,测试处于 "耐心等待" 的执行中状态。