
专栏基础设施管理难度专家标签Nginx性能调优高并发连接池缓存前言默认安装的 Nginx 在1万QPS下开始出现问题CPU利用率不均、连接被拒绝、响应时间飙高。本文基于真实10万QPS场景分享完整调优方案。一、worker 进程调优# 自动设置为CPU核数 worker_processes auto; # worker进程CPU亲和性绑定8核机器示例 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; # 每个worker的最大连接数 events { worker_connections 65535; use epoll; # Linux下必须用epoll multi_accept on; # 一次accept多个连接 accept_mutex off; # 高并发下关闭减少延迟 }二、TCP / 网络层调优http { # 开启sendfile零拷贝提升静态文件性能 sendfile on; tcp_nopush on; # sendfile模式下减少网络包数量 tcp_nodelay on; # 关闭Nagle算法减少延迟 # 长连接超时减少频繁建连开销 keepalive_timeout 65; keepalive_requests 10000; # 与upstream保持长连接 upstream backend { server 10.0.0.1:8080; server 10.0.0.2:8080; keepalive 200; # 保持200个长连接 } }三、缓冲区调优http { # 代理缓冲减少与后端的交互次数 proxy_buffering on; proxy_buffer_size 16k; proxy_buffers 8 16k; proxy_busy_buffers_size 32k; # 客户端请求体缓冲 client_body_buffer_size 128k; client_max_body_size 100m; # 响应超时 proxy_read_timeout 120s; proxy_connect_timeout 10s; }四、缓存层配置Nginx proxy_cachehttp { # 定义缓存区 proxy_cache_path /var/cache/nginx/api levels1:2 keys_zoneapi_cache:100m max_size10g inactive60m use_temp_pathoff; server { location /api/v1/hot/ { proxy_cache api_cache; proxy_cache_key $host$request_uri$cookie_user; proxy_cache_valid 200 1m; # 200响应缓存1分钟 proxy_cache_valid 404 10s; # 缓存命中时在响应头中标注 add_header X-Cache-Status $upstream_cache_status; proxy_pass http://backend; } } }五、压缩减少带宽http { gzip on; gzip_vary on; gzip_min_length 1k; gzip_comp_level 6; # 1-96是压缩率与CPU的平衡点 gzip_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript; }六、调优效果验证# 压测工具wrk-t12-c400-d30s--latencyhttp://example.com/api/test# 实时监控Nginx状态需开启stub_status模块curlhttp://127.0.0.1/nginx_status# 分析access.log找慢请求awk{print $NF}/var/log/nginx/access.log|sort-n|tail-20结语Nginx调优是一个持续过程没有一刀切的配置。关键是理解每个参数的含义根据监控数据做有针对性的调整。