LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

高并发下,Nginx如何提升10倍性能?

admin
2025年12月20日 11:34 本文热度 715

一、worker_processes —— CPU 利用率的上限

要实现性能的“10倍跨越”,核心逻辑是充分利用多核 CPU 资源、优化连接复用以及打破操作系统的限制。

Nginx 是单线程异步非阻塞模型,要跑满硬件性能,必须让 Nginx 的工作进程与 CPU 核心一一对应。

    worker_processes: 建议设置为 autoworker_processes auto; worker_cpu_affinity auto; # 自动绑定 CPU 亲和性

    这会让 Nginx ,自动检测 CPU 核心数并启动对应数量的工作进程。

     

    二、worker_connections —— 并发连接能力的核心

    单机千万级 QPS 的第一个瓶颈往往是文件句柄数。

    在 Linux 中,每个连接都是一个文件。

    worker_rlimit_nofile: 必须调大工作进程能打开的最大文件数(建议 65535 或更高)。

    worker_connections: 单个工作进程能处理的最大连接数。

    公式: 最大并发连接数 = worker_processes * worker_connections。


    1. worker_rlimit_nofile 65535;# 突破系统默认的 1024 限制
    2.  
    3. events {
    4.     worker_connections 10240;# 单个进程支持万级连接
    5. use epoll;# Linux 下必选的高效 I/O 复用模型
    6.     multi_accept on;# 允许一次性接受多个新连接
    7. }

     

    三、减少握手开销: keepalive_timeout

    在高并发场景下,频繁建立和关闭 TCP 连接(三次握手、四次挥手)会消耗大量 CPU 并导致 TIME_WAIT 连接堆积。

    keepalive_timeout: 保持长连接的超时时间(如 60s)。

    keepalive_requests: 这是提升性能的隐藏大招。

    默认通常只有 100,意味着一个长连接处理 100 个请求后就会关闭。

    在高并发场景下,应将其调大到 1000 甚至 10000。

    1. http {
    2.     keepalive_timeout 65;
    3.     keepalive_requests 10000;# 增加单个长连接能处理的请求数
    4. }

     

    四、零拷贝与网络传输优化:sendfile

    sendfile on: 开启“零拷贝”技术。

    数据不需要经过内核态与用户态的反复拷贝,直接由内核读取磁盘并发送给网卡,极大地降低了 CPU 负载。

    tcp_nopush on: 告诉 Nginx 在一个数据包里发送所有头文件,而不是一个接一个发送,提高网络效率。

    tcp_nodelay on: 禁用 Nagle 算法,确保小数据包能实时发送,减少响应延迟。


    阅读原文:原文链接


    该文章在 2025/12/22 18:59:37 编辑过
    关键字查询
    相关文章
    正在查询...
    点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
    点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
    点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
    点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
    Copyright 2010-2026 ClickSun All Rights Reserved