温馨提示×

怎样优化linux nginx性能

小樊
45
2026-10-19 14:16:44
栏目: 智能运维

优化 Linux 下 Nginx 的性能,通常可以从系统层面、Nginx 配置层面、网络与内核参数、以及架构层面四个方向入手。下面给你一个比较系统、可落地的优化清单。


一、Nginx 自身配置优化(最核心)

1. worker 进程与 CPU 绑定

worker_processes auto;        # 一般等于 CPU 核心数
worker_cpu_affinity auto;     # 自动绑定 CPU

2. 事件模型优化

events {
    use epoll;                # Linux 下最佳
    worker_connections 10240; # 单 worker 最大连接数
    multi_accept on;          # 一次性接受多个连接
}

3. 开启高效文件传输

http {
    sendfile on;
    tcp_nopush on;     # 配合 sendfile
    tcp_nodelay on;    # 小包即时发送(动态内容)
}

4. 连接与超时优化

keepalive_timeout 30s;
client_header_timeout 15s;
client_body_timeout 15s;
send_timeout 15s;

5. 开启 Gzip 压缩

gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml;

6. 静态资源缓存

location ~* \.(jpg|css|js|png)$ {
    expires 30d;
    access_log off;
}

7. 限制请求(防攻击)

limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn:10m;

二、Linux 系统 / 内核参数优化

1. 文件描述符限制

# /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000

2. 内核网络参数(/etc/sysctl.conf)

net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 600

执行:

sysctl -p

三、架构层面的优化(效果最明显)

1. 使用反向代理 + 缓存

proxy_cache_path /data/cache levels=1:2 keys_zone=mycache:10m;

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

2. 静态资源与动态分离

  • 静态:Nginx 直接处理
  • 动态:转发到后端(PHP / Java / Node)

3. 启用 HTTP/2

listen 443 ssl http2;

4. 使用 SSL 优化

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3;

四、监控与压测(验证优化效果)

1. 压测工具

ab -n 10000 -c 1000 http://localhost/
wrk -t8 -c1000 -d30s http://localhost/

2. 监控指标

  • CPU / 内存
  • 连接数(ss -s)
  • Nginx 状态码(4xx / 5xx)

五、常见误区

❌ 盲目调大 worker_connections
❌ 开启过多模块
❌ 忽略后端瓶颈(Nginx 再快也没用)


如果你愿意,可以告诉我:

  • 你的 Nginx 版本 & Linux 发行版
  • 是 静态站 / 接口 / 视频 / 高并发场景
  • 当前 QPS 和瓶颈表现

我可以给你一套针对性配置模板。

0 踩