找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

5120

积分

0

好友

708

主题
发表于 2 小时前 | 查看: 1| 回复: 0

性能提升箭头动态指示图

适用场景:生产环境 Nginx 响应慢、并发低、连接超时等性能瓶颈问题,需要快速提升 QPS 和并发处理能力。
环境要求:Nginx 1.18+ (推荐 1.24+),Linux(RHEL/CentOS 7.9+ 或 Ubuntu 20.04+),内核 4.18+,具备 root 或 sudo 权限。

1️⃣ 实施步骤

架构与数据流说明

Nginx 请求处理流程:

客户端请求
    ↓
网络层(内核 TCP 栈)
    ↓
Nginx Master 进程(监听端口)
    ↓
Nginx Worker 进程(处理请求)
    ├─ 静态文件 → 直接返回
    └─ 动态请求 → Proxy Pass 到后端
    ↓
响应返回客户端

关键组件:

  • Master 进程:负责读取配置、管理 Worker 进程、绑定端口
  • Worker 进程:实际处理客户端请求,采用事件驱动模型(epoll/kqueue)
  • 事件模块:异步非阻塞 IO,单个 Worker 可处理数万并发连接
  • 缓存模块:静态文件缓存、FastCGI 缓存、Proxy 缓存

性能瓶颈点:

  1. Worker 进程数不足 → CPU 核心未充分利用
  2. 连接数限制 → worker_connections 过小
  3. 文件描述符限制 → ulimit 过低
  4. Keep-Alive 未启用 → 频繁建立连接消耗资源
  5. 缓冲区过小 → 频繁磁盘 IO
  6. 日志过于详细 → 磁盘 IO 瓶颈
  7. Gzip 压缩未启用 → 带宽浪费
  8. TCP 参数未优化 → 系统层瓶颈

Step 1: 基础环境检查

目标: 确认系统资源和 Nginx 版本满足要求

环境信息(示例):

  • 服务器:192.168.1.50 (8C16G / CentOS 8.5)
  • Nginx 版本:1.24.0(编译安装)
  • 当前 QPS:约 2000(需提升至 20000)
  • 并发连接:约 5000(需提升至 50000)

RHEL/CentOS 命令:

# 1. 检查 Nginx 版本和编译参数
nginx -V
# 预期输出(关键模块):
# nginx version: nginx/1.24.0
# configure arguments: --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module

# 2. 检查 CPU 核心数(Worker 进程数应与之匹配)
nproc
# 预期输出:8(8 核 CPU)

# 3. 检查当前系统文件描述符限制
ulimit -n
# 预期输出:1024(默认值,需提升)

# 4. 检查 Nginx 当前连接数
ss -s | grep TCP
# 预期输出:TCP: 5234 (estab 4567, closed 567)

# 5. 查看 Nginx 进程信息
ps aux | grep nginx
# 预期输出:
# root      1234  0.0  0.1  nginx: master process
# nginx     1235  2.3  1.2  nginx: worker process
# nginx     1236  2.1  1.1  nginx: worker process

# 6. 检查系统内核参数
sysctl net.ipv4.tcp_max_syn_backlog
sysctl net.core.somaxconn
# 预期输出:默认值较小(128 或 512)

Ubuntu/Debian 命令:

# 基本命令相同
nginx -V
nproc
ulimit -n
ss -s

关键参数解释:

  1. nproc:CPU 核心数,Worker 进程数应设置为该值
  2. ulimit -n:单个进程最大文件描述符数,每个连接消耗 1 个
  3. ss -s:查看 TCP 连接统计,estab 为已建立连接数

执行后验证:

# 验证 Nginx 配置文件语法
nginx -t
# 预期输出:
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful

# 查看 Nginx 状态页面(需启用 stub_status)
curl http://localhost/nginx_status
# 预期输出:
# Active connections: 4567
# server accepts handled requests
#  12345678 12345678 98765432
# Reading: 10 Writing: 20 Waiting: 4537

Step 2: 参数 1-3 - Worker 进程与连接数优化

目标: 充分利用 CPU 和内存资源,提升并发处理能力

RHEL/CentOS 命令:

# 备份原配置
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

# 编辑 Nginx 主配置文件
vim /etc/nginx/nginx.conf

优化配置:

# /etc/nginx/nginx.conf

# 参数1:worker_processes(Worker 进程数)
# 优化前:worker_processes 1;  ← 仅使用 1 个 CPU 核心
# 优化后:
worker_processes auto;  # 自动检测 CPU 核心数(推荐)
# 或手动设置:worker_processes 8;  # 8 核 CPU 设置为 8

# 参数2:worker_cpu_affinity(CPU 亲和性)
# 作用:将每个 Worker 进程绑定到固定 CPU 核心,避免进程切换开销
worker_cpu_affinity auto;  # Nginx 1.9.10+ 自动绑定
# 或手动设置(8 核 CPU):
# worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

# 参数3:worker_connections(单个 Worker 最大连接数)
# 优化前:worker_connections 1024;  ← 最大并发 = 1024 * 1 = 1024
# 优化后:
events {
    worker_connections 65535;  # 单个 Worker 最大连接数(理论最大值)
    use epoll;                 # 使用 epoll 事件模型(Linux 最优)
    multi_accept on;           # Worker 一次接受所有新连接(提升效率)
}

# 说明:
# - 最大并发 = worker_processes * worker_connections
# - 例如:8 * 65535 = 524280(约 50 万并发)
# - 实际受限于系统文件描述符(ulimit)和内存

关键参数解释:

  1. worker_processes auto:自动设置为 CPU 核心数,充分利用多核
  2. worker_cpu_affinity auto:减少 CPU 缓存失效,提升 5%-10% 性能
  3. worker_connections 65535:理论最大值,实际需配合系统限制

执行后验证:

# 测试配置文件
nginx -t

# 重载配置(不中断服务)
nginx -s reload

# 验证 Worker 进程数
ps aux | grep "nginx: worker" | grep -v grep | wc -l
# 预期输出:8(与 CPU 核心数相同)

# 查看 Worker CPU 绑定情况
taskset -cp $(pgrep -f "nginx: worker" | head -1)
# 预期输出:pid 1235's current affinity list: 0(绑定到 CPU0)

Step 3: 参数 4-5 - 文件描述符与内核优化

目标: 突破系统层面限制,支持更多并发连接

RHEL/CentOS 命令:

# 1. 提升系统级文件描述符限制
# 编辑 /etc/sysctl.conf
cat >> /etc/sysctl.conf <<EOF

# Nginx 高性能优化
fs.file-max = 1000000               # 系统最大文件描述符
net.core.somaxconn = 65535          # 监听队列长度
net.ipv4.tcp_max_syn_backlog = 8192 # SYN 队列长度
net.ipv4.ip_local_port_range = 1024 65535  # 可用端口范围
net.ipv4.tcp_tw_reuse = 1           # TIME_WAIT 快速回收
net.ipv4.tcp_fin_timeout = 30       # FIN_WAIT_2 超时时间
EOF

# 应用内核参数
sysctl -p
# 预期输出:显示所有修改的参数

# 2. 提升进程级文件描述符限制
# 编辑 /etc/security/limits.conf
cat >> /etc/security/limits.conf <<EOF
# Nginx 进程限制
*  soft  nofile  100000
*  hard  nofile  100000
nginx  soft  nofile  100000
nginx  hard  nofile  100000
EOF

# 3. 在 Nginx 配置中启用高连接数
vim /etc/nginx/nginx.conf

优化配置:

# /etc/nginx/nginx.conf

# 参数4:worker_rlimit_nofile(Worker 进程文件描述符限制)
# 优化前:未设置,默认继承系统 ulimit(1024)
# 优化后:
worker_rlimit_nofile 100000;  # Worker 进程最大文件描述符(应 > worker_connections * 2)

# 参数5:worker_priority(Worker 进程优先级)
# 作用:降低 Worker 进程 nice 值,提升调度优先级
worker_priority -10;  # 范围 -20 到 19,负值优先级更高(谨慎使用)

关键参数解释:

  1. fs.file-max:系统级限制,所有进程共享
  2. worker_rlimit_nofile:单个 Worker 进程限制,应设置为 worker_connections * 2(每个连接占用 2 个 fd:客户端连接 + 后端连接)
  3. net.core.somaxconn:listen() 监听队列长度,过小导致连接拒绝

执行后验证:

# 验证系统参数
sysctl fs.file-max
# 预期输出:fs.file-max = 1000000

sysctl net.core.somaxconn
# 预期输出:net.core.somaxconn = 65535

# 验证进程限制
ulimit -n
# 预期输出:100000

# 重启 Nginx 使进程限制生效
systemctl restart nginx

# 查看 Nginx Worker 进程限制
cat /proc/$(pgrep -f "nginx: worker" | head -1)/limits | grep "Max open files"
# 预期输出:Max open files 100000 100000 files

Step 4: 参数 6-7 - Keep-Alive 与缓冲区优化

目标: 减少连接建立开销,优化 IO 性能

优化配置:

# /etc/nginx/nginx.conf

http {
    # 参数6:Keep-Alive 长连接优化
    # 优化前:
    # keepalive_timeout 65;  ← 默认值
    # 优化后:
    keepalive_timeout 120;           # 客户端 Keep-Alive 超时(秒)
    keepalive_requests 10000;        # 单个连接最大请求数(默认 100,提升后减少连接建立)

    # 上游 Keep-Alive(与后端服务器)
    upstream backend {
        server 192.168.1.100:8080;
        server 192.168.1.101:8080;
        keepalive 300;               # 保持 300 个空闲连接到后端(关键!)
        keepalive_timeout 60s;       # 后端连接超时
        keepalive_requests 1000;     # 单个后端连接最大请求数
    }

    # 参数7:缓冲区优化
    # 优化前:使用默认值(较小)
    # 优化后:
    client_header_buffer_size 4k;       # 客户端请求头缓冲(默认 1k)
    large_client_header_buffers 4 8k;   # 大请求头缓冲(默认 4 4k)
    client_body_buffer_size 128k;       # 客户端请求体缓冲(默认 16k)
    client_max_body_size 50m;           # 最大上传文件大小(默认 1m)

    # Proxy 缓冲区优化
    proxy_buffer_size 16k;              # 后端响应头缓冲(默认 4k)
    proxy_buffers 16 32k;               # 后端响应体缓冲(默认 8 4k)
    proxy_busy_buffers_size 64k;        # 忙碌缓冲区
    proxy_temp_file_write_size 64k;     # 临时文件写入大小

    # FastCGI 缓冲区优化(PHP 场景)
    fastcgi_buffer_size 16k;
    fastcgi_buffers 16 16k;
    fastcgi_busy_buffers_size 32k;
}

关键参数解释:

  1. keepalive_timeout:控制连接复用,减少 TCP 三次握手开销
  2. keepalive(upstream):与后端保持长连接,提升 20%-30% 性能
  3. proxy_buffers:增大缓冲区减少磁盘 IO,提升响应速度

执行后验证:

# 验证 Keep-Alive 生效
curl -I http://localhost/
# 预期输出:
# Connection: keep-alive

# 测试连接复用(10 次请求复用 1 个连接)
time for i in {1..10}; do curl -s -o /dev/null http://localhost/; done
# 对比优化前后时间差异

# 查看后端连接池状态(需启用 upstream_status)
curl http://localhost/nginx_status
# 预期输出:Active connections 包含复用的后端连接

Step 5: 参数 8-10 - Gzip、日志与缓存优化

目标: 减少带宽占用和磁盘 IO,提升响应速度

优化配置:

# /etc/nginx/nginx.conf

http {
    # 参数8:Gzip 压缩优化
    # 优化前:gzip off;(未启用)
    # 优化后:
    gzip on;                         # 启用 Gzip 压缩
    gzip_comp_level 5;               # 压缩级别(1-9,5 为平衡点)
    gzip_min_length 1k;              # 最小压缩文件大小(< 1k 不压缩)
    gzip_types text/plain text/css application/json application/javascript application/xml;  # 压缩类型
    gzip_vary on;                    # 添加 Vary: Accept-Encoding 响应头
    gzip_disable "MSIE [1-6]\.";     # IE6 禁用 Gzip

    # 参数9:日志优化
    # 优化前:
    # access_log /var/log/nginx/access.log combined;  ← 每个请求都写日志
    # 优化后:
    access_log /var/log/nginx/access.log combined buffer=32k flush=5s;  # 使用缓冲,每 5 秒或 32KB 刷盘
    # 或关闭访问日志(极限性能场景):
    # access_log off;

    # 错误日志降级(减少 IO)
    error_log /var/log/nginx/error.log warn;  # 仅记录 warn 及以上级别(默认 error)

    # 参数10:静态文件缓存优化
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff2)$ {
        expires 30d;                 # 浏览器缓存 30 天
        add_header Cache-Control "public, immutable";
        access_log off;              # 静态文件不记录日志
    }

    # 开启文件缓存(减少 open/stat 系统调用)
    open_file_cache max=10000 inactive=60s;  # 缓存 1 万个文件,60 秒未访问清除
    open_file_cache_valid 80s;               # 80 秒验证缓存有效性
    open_file_cache_min_uses 2;              # 60 秒内访问 2 次才缓存
    open_file_cache_errors on;               # 缓存文件查找错误
}

关键参数解释:

  1. gzip_comp_level 5:压缩级别越高 CPU 消耗越大,5 为性能和压缩率平衡点
  2. access_log buffer=32k flush=5s:批量写日志,减少磁盘 IO 50%+
  3. open_file_cache:缓存文件描述符,减少 open() 系统调用

执行后验证:

# 验证 Gzip 生效
curl -H "Accept-Encoding: gzip" -I http://localhost/static/app.js
# 预期输出:
# Content-Encoding: gzip

# 对比压缩前后大小
curl -s http://localhost/static/app.js | wc -c  # 原始大小
curl -s -H "Accept-Encoding: gzip" http://localhost/static/app.js | wc -c  # 压缩后大小
# 预期:压缩率 60%-80%

# 验证文件缓存生效
strace -e open,stat -p $(pgrep -f "nginx: worker" | head -1) 2>&1 | grep "index.html"
# 多次访问同一文件,strace 输出减少说明缓存生效

Step 6: 性能基准测试

目标: 验证优化效果,对比优化前后性能指标

RHEL/CentOS 命令:

# 测试工具:wrk(需安装)
yum install -y git gcc make
git clone https://github.com/wg/wrk.git
cd wrk && make && sudo cp wrk /usr/local/bin/

# 场景1:优化前基准测试
wrk -t8 -c1000 -d30s --latency http://192.168.1.50/
# 预期输出(优化前):
# Running 30s test @ http://192.168.1.50/
#   8 threads and 1000 connections
#   Thread Stats   Avg      Stdev     Max   +/- Stdev
#     Latency   125.34ms   45.23ms   890.12ms   78.90%
#     Req/Sec     1.02k   234.56     1.45k    67.89%
#   Latency Distribution
#      50%  118.23ms
#      75%  156.78ms
#      90%  189.45ms
#      99%  345.67ms
#   245678 requests in 30.05s, 198.76MB read
# Requests/sec:   8176.32  ← 优化前 QPS
# Transfer/sec:      6.61MB

# 应用所有优化配置
nginx -s reload

# 场景2:优化后基准测试
wrk -t8 -c10000 -d30s --latency http://192.168.1.50/
# 预期输出(优化后):
# Running 30s test @ http://192.168.1.50/
#   8 threads and 10000 connections
#   Thread Stats   Avg      Stdev     Max   +/- Stdev
#     Latency    45.23ms   12.34ms   234.56ms   89.12%
#     Req/Sec    28.45k     2.34k    32.67k    78.90%
#   Latency Distribution
#      50%   42.15ms
#      75%   52.34ms
#      90%   61.23ms
#      99%   98.45ms
#   6789234 requests in 30.08s, 5.48GB read
# Requests/sec:  225641.23  ← 优化后 QPS,提升 27.6 倍!
# Transfer/sec:    186.34MB

# 场景3:静态文件性能测试(验证 Gzip 和缓存)
wrk -t8 -c1000 -d30s --latency http://192.168.1.50/static/app.js
# 预期:QPS > 50000(静态文件极高性能)

关键指标解读:

  1. QPS(Requests/sec):每秒处理请求数,优化目标指标
  2. Latency(延迟):请求响应时间,越低越好
  3. 99th percentile:99% 请求的延迟,衡量稳定性

2️⃣ 最小必要原理

核心机制:

Nginx 采用 事件驱动 + 异步非阻塞 架构,单个 Worker 进程可处理数万并发连接。关键优化点:

  1. 多进程 + 事件驱动
    • Master 进程管理配置和 Worker
    • Worker 进程使用 epoll(Linux)/ kqueue(BSD)监听事件
    • 单个 Worker = 单线程 + 事件循环,避免锁竞争
  2. 零拷贝与 Sendfile
    • 静态文件使用 sendfile() 系统调用,直接从文件缓存发送到网卡
    • 避免用户态 → 内核态拷贝,减少 CPU 消耗
  3. 连接复用(Keep-Alive)
    • HTTP/1.1 长连接减少 TCP 三次握手
    • Upstream Keep-Alive 减少与后端服务器的连接建立
  4. 内存池与缓冲区
    • Nginx 使用内存池管理小内存分配,减少 malloc/free 开销
    • 增大缓冲区减少磁盘临时文件写入

为什么能提升 10 倍性能?

  • 优化前瓶颈:Worker 进程少(单核)+ 连接数限制(1024)+ 频繁建连(无 Keep-Alive)
  • 优化后突破:充分利用多核(8 Worker)+ 高并发(50 万)+ 连接复用 + Gzip 压缩
  • 性能提升来源
    • Worker 进程:1 → 8,理论提升 8 倍
    • Keep-Alive:减少 30% CPU 消耗
    • Gzip:减少 70% 带宽占用
    • 综合提升:8 1.3 1.5 ≈ 15.6 倍(考虑其他优化)

3️⃣ 可观测性

监控指标

Linux 原生监控:

# 1. 实时监控 Nginx QPS
watch -n 1 'curl -s http://localhost/nginx_status | grep "requests" | awk "{print \$3}"'

# 2. 监控活跃连接数
watch -n 1 'curl -s http://localhost/nginx_status | head -1'
# 预期输出:Active connections: 12345

# 3. 监控 Worker 进程 CPU
top -p $(pgrep -d',' -f "nginx: worker")

# 4. 监控网络流量
iftop -i eth0

# 5. 监控文件描述符使用率
watch -n 5 'lsof -u nginx | wc -l'

Prometheus 监控配置:

# /etc/prometheus/prometheus.yml
scrape_configs:
  - job_name: 'nginx'
    static_configs:
      - targets:
        - '192.168.1.50:9113' # nginx-prometheus-exporter
        labels:
          instance: 'web-nginx'

Prometheus 告警规则:

# /etc/prometheus/rules/nginx_alerts.yml
groups:
  - name: nginx_performance
    interval: 10s
    rules:
      - alert: NginxHighErrorRate
        expr: rate(nginx_http_requests_total{status=~"5.."}[5m]) / rate(nginx_http_requests_total[5m]) > 0.05
        for: 3m
        labels:
          severity: critical
        annotations:
          summary: "Nginx 错误率过高({{ $value | humanizePercentage }})"

      - alert: NginxConnectionsNearLimit
        expr: nginx_connections_active / nginx_connections_limit > 0.8
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Nginx 连接数接近上限({{ $value | humanizePercentage }})"

4️⃣ 常见故障与排错

故障编号 症状 诊断命令 可能根因 快速修复 永久修复
#1 worker_connections 不足 error.log 显示 “worker_connections are not enough” 连接数设置过小 临时提升至 10000 修改配置为 65535,配合系统 ulimit
#2 502 Bad Gateway curl -I http://localhost 返回 502 1. 后端服务挂了
2. 超时设置过短
重启后端服务 增加 proxy_timeout,配置健康检查
#3 配置重载后连接断开 访问中断几秒 reload 导致旧 Worker 退出 使用平滑重启 配置 worker_shutdown_timeout 30s;
#4 Gzip 压缩未生效 响应头无 Content-Encoding 1. gzip_types 未包含该类型
2. 文件过小
检查 MIME 类型 添加对应类型到 gzip_types
#5 Keep-Alive 未生效 每次请求都建立新连接 upstream 未配置 keepalive 添加 upstream keepalive 配置 完整配置 upstream keep-alive 参数

5️⃣ 变更与回滚剧本

灰度策略

步骤:

# 1. 在测试环境验证配置
nginx -t

# 2. 备份配置
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.before_tuning

# 3. 分阶段应用优化
# 阶段1:仅修改 Worker 进程数和连接数,观察 1 小时
# 阶段2:启用 Keep-Alive 和缓冲区优化,观察 1 小时
# 阶段3:启用 Gzip 和缓存优化,观察 24 小时

# 4. 平滑重载配置
nginx -s reload

回滚条件与命令

回滚触发条件:

  1. 错误率上升 > 1%
  2. P99 延迟增加 > 50%
  3. Worker 进程异常退出

回滚步骤:

# 恢复备份配置
cp /etc/nginx/nginx.conf.before_tuning /etc/nginx/nginx.conf
nginx -t && nginx -s reload

6️⃣ 最佳实践

  1. Worker 进程数 = CPU 核心数
  2. worker_connections = 10000 - 65535(根据内存调整)
  3. 启用 upstream keepalive(提升 20%-30% 性能)
  4. Gzip 压缩级别 = 5(平衡 CPU 和压缩率)
  5. 访问日志使用缓冲(buffer=32k flush=5s)
  6. 静态文件启用浏览器缓存(expires 30d)
  7. 定期监控文件描述符使用率(避免耗尽)

7️⃣ FAQ

Q1: worker_processes 设置多少合适?
A: 设置为 auto 或 CPU 核心数。过多无益(上下文切换开销),过少浪费 CPU。

Q2: worker_connections 设置 65535 后仍然连接不足?
A: 检查系统 ulimit 和内核参数 fs.file-max、net.core.somaxconn。

Q3: Gzip 压缩级别设置多少?
A: 推荐 5-6。1-3 压缩率低,7-9 CPU 消耗高但压缩率提升不明显。

Q4: 如何验证 Keep-Alive 生效?
A: 使用 tcpdump 抓包,查看同一 TCP 连接是否发送多个 HTTP 请求。

Q5: 优化后 QPS 未明显提升?
A: 可能瓶颈在后端服务或网络,使用 ab -k 测试纯 Nginx 性能。

8️⃣ 附录:关键脚本

脚本 1:Nginx 性能优化一键脚本

#!/bin/bash
##############################################################################
# 文件名:nginx_performance_tuning.sh
# 版本:v1.0.0
# 用途:Nginx 性能优化一键配置
##############################################################################

set -euo pipefail

# 检测 CPU 核心数
CPU_CORES=$(nproc)

# 备份原配置
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

# 生成优化配置
cat > /etc/nginx/nginx.conf <<EOF
user nginx;
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 100000;
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;

events {
    worker_connections 65535;
    use epoll;
    multi_accept on;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" '
                    '\$status \$body_bytes_sent "\$http_referer" '
                    '"\$http_user_agent" "\$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main buffer=32k flush=5s;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 120;
    keepalive_requests 10000;
    types_hash_max_size 2048;

    client_header_buffer_size 4k;
    large_client_header_buffers 4 8k;
    client_body_buffer_size 128k;
    client_max_body_size 50m;

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

    open_file_cache max=10000 inactive=60s;
    open_file_cache_valid 80s;
    open_file_cache_min_uses 2;

    include /etc/nginx/conf.d/*.conf;
}
EOF

# 优化系统参数
cat >> /etc/sysctl.conf <<EOF
fs.file-max = 1000000
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 8192
EOF

sysctl -p

# 测试并重载
nginx -t && nginx -s reload

echo "Nginx 性能优化完成!"

9️⃣ 扩展阅读

官方文档:

技术博客:

性能测试工具:

本文介绍了Nginx性能调优的核心理念与实战参数,旨在帮助开发者快速定位并解决高并发场景下的性能瓶颈。更多关于系统优化运维实践的深度讨论,欢迎在云栈社区进行交流。




上一篇:LangChain智能体开发:SKILL.md模式实现动态技能加载实战
下一篇:eBPF可视化:Linux系统监控从基础到实战,替代传统top命令
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-9 06:50 , Processed in 0.625828 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表