插件窝 干货文章 Nginx性能优化的方法

Nginx性能优化的方法

Nginx 连接 优化 Cache    来源:    2025-04-21

以下是一些有效的Nginx性能优化方法,涵盖配置调优、系统参数调整和架构优化等方面:


1. 基础配置优化

工作进程与连接数

worker_processes auto;  # 自动匹配CPU核心数
worker_rlimit_nofile 100000;  # 每个worker能打开的文件描述符上限

events {
    worker_connections 10240;  # 每个worker的最大连接数
    use epoll;  # Linux高性能事件模型
    multi_accept on;  # 一次性接受所有新连接
}

HTTP基础优化

http {
    sendfile on;  # 启用零拷贝传输
    tcp_nopush on;  # 合并数据包减少网络开销
    tcp_nodelay on;  # 禁用Nagle算法,提升实时性
    keepalive_timeout 30;  # 保持连接超时时间
    keepalive_requests 1000;  # 单个连接的最大请求数
    reset_timedout_connection on;  # 关闭超时连接释放资源
}

2. 静态资源与缓存优化

静态资源缓存

location ~* \.(jpg|css|js|gif|png)$ {
    expires 365d;  # 长期缓存
    access_log off;  # 关闭日志减少IO
    add_header Cache-Control "public";
}

代理缓存

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 10m;

location / {
    proxy_cache my_cache;
    proxy_pass http://backend;
}

3. 负载均衡与后端优化

负载均衡策略

upstream backend {
    least_conn;  # 最少连接数策略
    server 10.0.0.1:80 weight=3;
    server 10.0.0.2:80;
    server 10.0.0.3:80 backup;  # 备用服务器
}

后端连接复用

upstream backend {
    keepalive 32;  # 保持到后端的长连接数
    server 10.0.0.1:80;
}

location / {
    proxy_http_version 1.1;
    proxy_set_header Connection "";
}

4. 系统级优化

Linux内核参数调优

# 增加端口范围
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf

# 提高TCP连接复用能力
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf

# 应用配置
sysctl -p

文件描述符限制

# 修改系统限制
echo "nginx soft nofile 100000" >> /etc/security/limits.conf
echo "nginx hard nofile 100000" >> /etc/security/limits.conf

5. 高级优化技巧

  • 启用Gzip压缩:

    gzip on;
    gzip_types text/plain text/css application/json application/javascript;
    
  • 禁用访问日志(高负载时):

    access_log off;
    
  • 使用HTTP/2:

    listen 443 ssl http2;
    
  • 静态资源分离: 将静态文件托管到CDN或独立域名(如 static.example.com),减少主站负载。


6. 监控与调试

  • 启用状态页:

    location /nginx_status {
    stub_status on;
    allow 127.0.0.1;
    deny all;
    }
    
  • 日志分析工具: 使用 GoAccess、ELK 或 Prometheus + Grafana 监控请求延迟、错误率等指标。


7. 其他建议

  • 定期更新Nginx:使用最新稳定版以获得性能改进。
  • 硬件加速:启用SSL硬件加速卡(如支持)。
  • 测试工具:用 wrk、ab 或 jmeter 压测验证优化效果。

通过以上方法,可显著提升Nginx的吞吐量、降低延迟,并提高资源利用率。建议根据实际业务场景逐步调整并测试效果。