Nginx百万并发优化:如何提升100倍性能!

服务器 服务器产品
Nginx 的并发能力由其进程模型决定,关键在于合理配置 Worker 进程数和每个进程的连接数。进程与连接模型:Nginx 的总并发能力(理论最大值)约等于: worker_processes​ × worker_connections。

Nginx 并发能力最大化

Nginx 的并发能力由其进程模型决定,关键在于合理配置 Worker 进程数和每个进程的连接数。

进程与连接模型:Nginx 的总并发能力(理论最大值)约等于: worker_processes × worker_connections。

最新文章最新文章

worker_processes:建议设置为 auto /或 CPU 核心数。

避免设置过多,否则会引入不必要的上下文切换开销。

worker_connections:尽其所能设置最大值。

通常可以设为 65535 甚至更高,比如:worker_connections 65535; 提升单进程连接能力。

worker_processes auto;
 worker_rlimit_nofile 1000000;
  
 events {
 use epoll;
     worker_connections 65535;
     multi_accept on;
 }

操作系统内核优化

Nginx 的并发上限首先受限于操作系统,特别是 Linux。

只有将内核参数调整到位,才能为 Nginx 提供足够的资源。

文件描述符 (FD) 限制:Nginx 每处理一个连接、打开一个文件,都需要一个 FD。

百万并发意味着需要百万级别的 FD,需要设置:提高系统和 Nginx 进程的 FD 上限。

最新文章最新文章

修改 /etc/security/limits.conf 中的 nofile(如 * soft nofile 655360)。

在 Nginx 配置中(nginx.conf 的 main 块),使用 worker_rlimit_nofile 655360; 来确保 Worker 进程能使用这个上限。

Nginx配置优化

事件驱动模型:在 events 块中明确指定事件驱动模型,在 Linux 上使用最高效的 use epoll;。

以及,长连接(Keepalive)优化:减少重复建立和关闭 TCP 连接的开销。

调整 keepalive_timeout 30s; 和 keepalive_requests 1000;

设置合理的超时时间,同时允许单个连接传输更多的请求。

# 示例配置片段
worker_processesauto;
worker_rlimit_nofile655360;

events{
useepoll;
worker_connections65535;
multi_accepton;
}

http{
keepalive_timeout30;
keepalive_requests1000;
# ... 其他配置
}

架构优化

单台 Nginx 硬件性能终有极限,要达到真正的“百万并发”,必须依赖集群和架构分层。

前端负载均衡:在 Nginx 集群前部署 L4/L7 负载均衡器 (如 LVS、HAProxy、或云厂商的 SLB) 或使用 DNS 轮询。

# 上层 LVS/Keepalived 负责调度到多台 Nginx
 upstream backend {
     server 10.0.0.1:8080 weight=3;
     server 10.0.0.2:8080 weight=2;
     server 10.0.0.3:8080 weight=1;
 }
 server {
     listen 80;
     location /{
         proxy_pass http://backend;
 }
 }

将流量分散到多台 Nginx 服务器上,实现横向扩展。

再动静分离,彻底将静态资源和动态业务请求分离。

将所有静态资源统一上传到 CDN(内容分发网络),让 CDN 承担绝大部分静态流量。

责任编辑:武晓燕 来源: mikechen的互联网架构
相关推荐

2013-09-26 14:11:23

SQL性能优化

2024-10-29 08:21:05

2020-07-21 15:40:55

NginxJava服务器

2025-02-26 03:00:00

2020-03-26 12:38:15

代码节点数据

2022-04-11 15:56:51

Golang代码框架

2022-08-12 22:53:32

HadoopHDFS分布式

2024-12-26 09:15:28

2021-04-21 18:57:16

二进制存储空间

2022-04-21 07:51:51

场景JavaSQL

2024-07-17 08:25:44

2022-11-27 17:39:06

大数据集群性能

2025-04-07 02:22:00

C#性能优化

2017-12-13 13:09:36

NginxWeb应用

2012-11-21 17:35:21

Oracle技术嘉年华

2012-03-12 13:54:56

ASP.NET

2020-05-14 19:30:12

数据库分区表PostgreSQL

2020-08-10 11:00:02

Python优化代码

2017-09-26 14:56:57

MongoDBLBS服务性能

2017-03-20 16:57:56

nginxepollC10K
点赞
收藏

51CTO技术栈公众号