怎样配置Debian Nginx提高服务器性能
导读:Debian 上提升 Nginx 性能的实用配置清单 一 系统层优化 文件句柄与进程限制 在 /etc/security/limits.conf 提升软硬限制,例如: 全局:* soft nofile 200000;* hard n...
Debian 上提升 Nginx 性能的实用配置清单
一 系统层优化
- 文件句柄与进程限制
- 在 /etc/security/limits.conf 提升软硬限制,例如:
- 全局:* soft nofile 200000;* hard nofile 500000
- 或仅对 Nginx 用户(如 www-data)设置
- 在 /etc/pam.d/common-session 确认包含:session required pam_limits.so
- 在 Nginx 主配置设置:worker_rlimit_nofile 200000; ,使 worker 进程突破默认句柄上限
- 在 /etc/security/limits.conf 提升软硬限制,例如:
- 内核网络参数(/etc/sysctl.conf)
- 提升连接容量与缩短回收时间:
- fs.file-max = 1000000
- net.core.somaxconn = 65535
- net.core.netdev_max_backlog = 250000
- net.ipv4.tcp_max_syn_backlog = 65535
- net.ipv4.ip_local_port_range = 1024 65535
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_fin_timeout = 15
- 应用生效:sysctl -p
- 提升连接容量与缩短回收时间:
- 说明
- 上述数值可按业务与内核版本微调,目标是提高 somaxconn、backlog 与端口复用能力,降低 TIME_WAIT 占用。
二 Nginx 核心配置
- 进程与连接
- 建议:worker_processes auto; (自动按 CPU 核心数启动),或设为 CPU 核心数;必要时可尝试 2×核心数 做压测对比
- 提升并发:worker_connections 32768; (与系统句柄上限匹配)
- 事件模型:use epoll; multi_accept on;
- 传输与连接复用
- 启用零拷贝与合并发送:sendfile on; tcp_nopush on; tcp_nodelay on;
- 长连接复用:keepalive_timeout 65; keepalive_requests 10000;
- 超时与缓冲
- 合理收紧:client_body_timeout 20; client_header_timeout 20; send_timeout 30;
- 提升大响应处理能力(反向代理/FCGI 场景):
- fastcgi_buffers 16 16k; fastcgi_buffer_size 32k;
- fastcgi_connect_timeout 60s; fastcgi_send_timeout 180s; fastcgi_read_timeout 180s;
- 静态资源与浏览器缓存
- 对图片、样式、脚本等设置长期缓存:
- location ~* .(jpg|jpeg|png|gif|css|js|ico|svg)$ {
- expires 30d;
- add_header Cache-Control “public, no-transform”;
- }
- location ~* .(jpg|jpeg|png|gif|css|js|ico|svg)$ {
- 对图片、样式、脚本等设置长期缓存:
- 压缩与文件句柄缓存
- 启用压缩(按需调整类型与阈值):
- gzip on; gzip_vary on; gzip_min_length 10240;
- gzip_proxied expired no-cache no-store private auth;
- gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
- 打开文件句柄缓存(减少系统调用):
- open_file_cache max=200000 inactive=20s;
- open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on;
- 启用压缩(按需调整类型与阈值):
- 安全与限流(减轻滥用带来的性能劣化)
- 速率限制(示例:基于 IP 的 10r/s,突发 20):
- limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
- limit_req zone=one burst=20 nodelay;
- 按需使用 allow/deny 做访问控制。
- 速率限制(示例:基于 IP 的 10r/s,突发 20):
三 反向代理与缓存
- 页面与代理缓存
- 启用 proxy_cache_path 与 fastcgi_cache_path(示例):
- proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=STATIC:100m inactive=60m use_temp_path=off;
- fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=DYNAMIC:100m inactive=60m;
- 在 location 中使用:
- proxy_cache STATIC; proxy_cache_valid 200 1h; add_header X-Cache $upstream_cache_status;
- fastcgi_cache DYNAMIC; fastcgi_cache_valid 200 1h;
- 启用 proxy_cache_path 与 fastcgi_cache_path(示例):
- 负载均衡策略
- 在 upstream 中按需选择 轮询(默认)/最少连接(least_conn)/IP 哈希(ip_hash) 等策略,分散后端压力。
四 PHP‑FPM 与后端协同优化
- 进程模型与内存规划
- 结合内存与单进程占用选择 pm = dynamic,合理设置 pm.max_children / pm.start_servers / pm.min_spare_servers / pm.max_spare_servers
- 开启 pm.max_requests 做内存泄漏的周期性回收(如 10000)
- 超时与缓冲对齐
- 与 Nginx 的 fastcgi 超时保持一致(如 60s/180s),避免链路中某一段过早断开
- 静态资源分离
- 将图片、CSS、JS 等由 Nginx 直接服务,避免进入 PHP‑FPM 处理路径。
五 验证与监控
- 配置校验与热加载
- 校验:nginx -t
- 生效:systemctl reload nginx
- 实时监控
- 资源与连接:top/htop、vmstat、ss -s、netstat -n | awk ‘/^tcp/ { ++S[$NF]} END { for(a in S) print a, S[a]} ’
- 压测工具:wrk2、ab(逐步加压,观察 P95/P99 延迟与错误率)
- 日志与指标
- 使用 access_log/error_log 定位慢请求与异常;必要时自定义日志格式,加入 $request_time、$upstream_response_time 等字段
- 结合 open_file_cache 命中率与缓存命中率评估优化成效。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样配置Debian Nginx提高服务器性能
本文地址: https://pptw.com/jishu/788362.html
