当前位置:   article > 正文

Nginx 实战:Nginx性能优化

Nginx 实战:Nginx性能优化

Nginx性能优化涵盖了许多方面,以下是一些关键的实战优化策略:

1. 工作进程配置

  • 根据服务器的CPU核心数合理配置worker_processes,通常设为服务器的物理CPU核心数,或者在多核处理器上设置为CPU核心数的倍数(如超线程技术开启的情况下)。
worker_processes auto; # 自动检测CPU核心数
  • 1

2. 事件驱动模型

  • 配置事件处理模型,epoll在Linux 2.6+内核中效率较高,kqueue在FreeBSD和macOS中表现优秀。
events {
    use epoll; # 对于Linux系统
    multi_accept on; # 启用一次accept()接收多个连接
    worker_connections 1024; # 每个工作进程的最大连接数
}
  • 1
  • 2
  • 3
  • 4
  • 5

3. 连接池与缓冲区

  • 调整连接缓冲区大小,根据实际业务需求优化client_body_buffer_sizeproxy_buffers等设置。
http {
    client_body_buffer_size 16k; # 根据上传文件大小等情况调整
    proxy_buffers 4 32k; # 分配给代理请求的缓冲区
    proxy_buffer_size 8k; # 用于临时存储响应头的缓冲区大小
}
  • 1
  • 2
  • 3
  • 4
  • 5

4. HTTP Keepalive

  • 开启HTTP Keepalive以复用连接,减少新建连接的开销。
http {
    keepalive_timeout 60s; # 设置空闲连接保持时间
}
  • 1
  • 2
  • 3

5. 缓存优化

  • 对静态资源启用缓存,减小后端服务器压力。
location /static/ {
    expires 30d;
    add_header Cache-Control public;
}

# 或者使用proxy_cache模块进行动态内容缓存
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
location / {
    proxy_pass http://backend;
    proxy_cache my_cache;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_cache_valid 200 302 1h;
    proxy_cache_valid 404      1m;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6. 负载均衡与健康检查

  • 合理配置负载均衡策略,例如轮询、最少连接数、权重分配等,并启用后端服务器健康检查。
upstream backend {
    server backend1.example.com weight=1 max_fails=3 fail_timeout=30s;
    server backend2.example.com:8080 backup;
    
    # 健康检查(某些版本的Nginx可能需要额外模块支持)
    # check interval=5000 rise=2 fall=5 timeout=1000;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

7. Gzip压缩

  • 启用Gzip压缩以减少网络传输数据量。
gzip on;
gzip_types text/plain application/x-javascript text/css text/xml application/xml application/json;
gzip_comp_level 6; # 压缩级别,范围1-9,默认1,数值越大压缩程度越高,但CPU消耗也会增大
gzip_vary on; # 提供给代理服务器判断是否启用Gzip压缩的依据
gzip_min_length 256; # 小于此长度的响应体不压缩
  • 1
  • 2
  • 3
  • 4
  • 5

8. 日志分割与压缩

  • 定期分割和压缩日志,减少磁盘I/O影响。

9. HTTP/2与TLS优化

  • 启用HTTP/2协议,使用最新的TLS加密套件和ECDHE加密算法,启用OCSP Stapling减少SSL握手延迟。
listen 443 ssl http2;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_ecdh_curve secp384r1; # 使用更强的椭圆曲线
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

10. 内存优化

  • 根据服务器的实际内存大小调整Nginx的buffer和cache大小,避免过度消耗内存导致系统不稳定。

持续监控系统性能,根据负载情况和性能瓶颈进行针对性优化,并确保Nginx与其他服务(如PHP-FPM、数据库等)的交互也是优化的一部分。此外,及时升级Nginx到最新稳定版,以便利用最新的性能改进和安全修复。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/303243
推荐阅读
相关标签
  

闽ICP备14008679号