首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Nginx 性能优化指南

  • 25-04-18 12:40
  • 3168
  • 12367
juejin.cn

一、核心配置优化

1. worker_processes
  • 作用:定义 Nginx 工作进程数量,直接影响 CPU 资源利用率。
  • 配置原则:
    • 默认值:auto(自动匹配 CPU 核心数)。
    • CPU 密集型场景(如动态计算):worker_processes = CPU核心数。
    • I/O 密集型场景(如静态文件服务器):可设置为 CPU核心数 * 1.5~2。
  • 示例:
    nginx
    代码解读
    复制代码
    worker_processes auto; # 自动检测 CPU 核心数(推荐)
2. worker_connections
  • 作用:单个工作进程的最大并发连接数。
  • 公式:最大并发 = worker_processes * worker_connections。
  • 配置原则:
    • 受限于系统文件描述符(ulimit -n)。
    • 反向代理场景需乘以 2(客户端 + 后端连接)。
  • 示例:
    nginx
    代码解读
    复制代码
    events { worker_connections 10240; # 单进程支持 10K 连接 multi_accept on; # 一次性接受所有新连接 use epoll; # Linux 高性能事件模型 }

二、内核参数优化

1. 文件描述符限制
  • 系统级:fs.file-max
    bash
    代码解读
    复制代码
    # /etc/sysctl.conf fs.file-max = 1000000
  • 用户级:nofile(Nginx 进程限制)
    bash
    代码解读
    复制代码
    # /etc/security/limits.conf nginx soft nofile 65535 nginx hard nofile 65535
2. 连接队列优化
  • net.core.somaxconn:全连接队列最大值(默认 128,建议 1024+)
  • net.ipv4.tcp_max_syn_backlog:半连接队列最大值(建议 2048)
    bash
    代码解读
    复制代码
    # /etc/sysctl.conf net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_syncookies = 1 # 防 SYN Flood net.ipv4.tcp_tw_reuse = 1 # 快速回收 TIME_WAIT 连接
3. 应用内核参数
bash
代码解读
复制代码
sysctl -p

三、多业务场景优化案例

场景 1:静态资源服务器
  • 特点:高并发、小文件传输。
  • 配置:
    nginx
    代码解读
    复制代码
    worker_processes auto; events { worker_connections 16384; use epoll; } http { sendfile on; # 零拷贝技术 tcp_nopush on; # 合并数据包 aio on; # 异步 I/O(大文件适用) }
场景 2:反向代理服务器
  • 特点:处理前后端连接,需高吞吐。
  • 配置:
    nginx
    代码解读
    复制代码
    worker_processes 8; # 8核 CPU events { worker_connections 8192; } http { upstream backend { keepalive 64; # 复用后端连接 server 10.0.0.1:80; } server { location / { proxy_http_version 1.1; proxy_set_header Connection ""; } } }
场景 3:高并发 Web 应用
  • 特点:频繁动态请求,需低延迟。
  • 配置:
    nginx
    代码解读
    复制代码
    worker_processes 4; events { worker_connections 4096; } http { keepalive_timeout 15; # 减少连接重建开销 gzip on; # 压缩响应 fastcgi_buffer_size 64k; # 避免缓冲区溢出 }
场景 4:负载均衡器(TCP 层)
  • 特点:四层转发,处理海量连接。
  • 配置:
    nginx
    代码解读
    复制代码
    worker_processes auto; events { worker_connections 32768; } stream { upstream tcp_backend { server 10.0.0.2:3306; # MySQL 集群 } server { listen 3306; proxy_pass tcp_backend; proxy_connect_timeout 1s; } }

四、验证与监控

  1. 测试工具:

    • 压力测试:wrk -t4 -c1000 -d30s http://example.com
    • 连接数监控:ss -s 或 netstat -ant | grep ESTABLISHED | wc -l
  2. Nginx 状态模块:

    nginx
    代码解读
    复制代码
    server { location /nginx_status { stub_status on; access_log off; } }
    • 输出示例:Active connections: 234(实时连接数)
  3. 系统监控:

    • top(CPU 利用率)
    • free -h(内存占用)
    • cat /proc/sys/fs/file-nr(已用文件描述符)

五、注意事项

  • 逐步调优:避免一次性调整过多参数,通过灰度测试观察效果。
  • 硬件瓶颈:SSD 磁盘、万兆网卡可能比软件优化更有效。
  • 安全平衡:net.ipv4.tcp_tw_recycle 在 NAT 环境下可能导致问题(建议关闭)。
注:本文转载自juejin.cn的ak啊的文章"https://juejin.cn/post/7493733975779213349"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

142
代码人生
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top