Nginx高可用架构设计与性能调优实战

Nginx 是一个高性能的 Web 服务器、反向代理服务器和负载均衡器。其优化核心在于合理利用系统资源,高效处理并发连接。

1、核心配置调优

  • worker进程与连接数
    • worker_processes auto;:设置为 auto 可自动匹配 CPU 核心数,充分利用多核
    • worker_connections 4096;:提高每个 worker 进程能处理的并发连接数(需结合系统限制调整)。你需要检查并调整 Linux 系统的文件描述符限制(nofile)以支持该值
  • 高效网络传输
    • sendfile on;:启用 sendfile 系统调用,减少文件传输中的上下文切换和数据拷贝,提升静态资源传输效率
    • tcp_nopush on;:与 sendfile 配合,确保数据包满载后再发送,提升网络效率
  • 连接复用
    • keepalive_timeout 30s; 与 keepalive_requests 100;:保持客户端连接一定时间,允许在该连接上发送多个请求,减少 TCP 连接建立和断开的开销
  • 缓冲与限制
    • 设置 client_max_body_size 10m; 限制客户端请求体大小,防止超大请求耗尽资源
    • 使用 limit_conn_zone 和 limit_conn 限制单一 IP 的并发连接数,防止滥用

2、缓存与压缩

启用压缩

启用 Gzip 压缩可以减少传输数据量

gzip on;
gzip_comp_level 6; # 压缩级别,1-9,通常6是性能与压缩比的良好平衡[citation:1]
gzip_types text/plain text/css application/json; # 指定需要压缩的文件类型

代理缓存

缓存后端响应可以显著减轻上游服务器压力。

proxy_cache_path /data/cache levels=1:2 keys_zone=my_cache:10m max_size=10g;
proxy_cache_key "$scheme$request_method$host$request_uri"; # 定义缓存键

然后在 location 块中使用 proxy_cache my_cache; 启用缓存。

维护与监控

  • 日志分析:定期分析 /var/log/nginx/access.log 和 error.log,排查异常请求和错误
  • 配置管理:每次修改配置后,使用 nginx -t 测试语法正确性,然后通过 systemctl reload nginx 平滑重载配置
  • 状态监控:编译时启用 ngx_http_stub_status_module 模块,通过内置页面实时监控连接数、请求数等关键指标
  • 定期更新:通过包管理工具(如 apt)定期更新 Nginx,以获取性能改进和安全补丁

留下评论