Debian系统中Nginx性能调优实践
grep processor /proc/cpuinfo | wc -l查看),若服务器负载较高,可设置为CPU核心数的2倍(如8核CPU设为16),以充分利用多核资源。worker_rlimit_nofile(设置为相同值)使用,避免连接数超过系统限制。events块中添加use epoll;(Linux下高效事件驱动模型),并开启multi_accept on;(允许单个工作进程一次接受多个新连接),提升并发处理能力。http块中设置sendfile on;,直接通过内核空间传输文件,减少用户态与内核态的数据拷贝,显著提升静态文件(如图片、CSS、JS)传输效率。tcp_nopush on;需与sendfile on;一起使用,确保数据包在填满TCP缓冲区后再发送,减少网络碎片,降低延迟。tcp_nodelay on;关闭Nagle算法,立即发送小数据包(如HTTP请求响应),避免延迟,提升实时性。在http块中添加Gzip配置,减少传输数据量(通常可压缩至原大小的30%-70%),加快页面加载速度:
gzip on;
gzip_vary on; # 添加Vary头,提示浏览器响应已压缩
gzip_min_length 1k; # 只压缩大于1KB的文件(小文件压缩反而增加CPU开销)
gzip_buffers 4 16k; # 压缩缓冲区大小
gzip_http_version 1.1; # 仅对HTTP/1.1及以上版本启用
gzip_comp_level 2; # 压缩级别(1-9,级别越高压缩率越高,但CPU消耗越大)
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml; # 需压缩的文件类型
expires指令设置静态资源的浏览器缓存时间,减少重复请求。例如,对图片、CSS、JS文件设置1个月缓存:location ~* \.(jpg|jpeg|png|gif|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
proxy_cache指令缓存后端响应(如API结果),减少后端服务器压力。需配置proxy_cache_path(缓存路径、大小)、proxy_cache_valid(缓存有效期)等参数。编辑/etc/sysctl.conf文件,调整以下内核参数以提升网络性能:
# 增加TCP连接跟踪表大小(应对高并发连接)
net.ipv4.netfilter.ip_conntrack_max = 655360
# 开启TCP SYN Cookie,防止SYN Flood攻击
net.ipv4.tcp_syncookies = 1
# 增加TCP窗口大小(提升大数据量传输效率)
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# 增加系统最大文件描述符数(与worker_rlimit_nofile一致)
fs.file-max = 65536
修改后执行sysctl -p使配置生效。
若有多台后端服务器,可通过upstream模块实现请求分发,提升整体吞吐量。常用负载均衡策略:
示例配置:
upstream backend {
least_conn; # 最少连接策略
server 192.168.1.101:80;
server 192.168.1.102:80;
server 192.168.1.103:80;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
access_log(记录请求信息)和error_log(记录错误信息)分析性能瓶颈(如慢请求、高频错误)。可使用awk、grep等工具提取关键指标(如响应时间、请求量)。top(查看CPU、内存占用)、htop(可视化监控)、vmstat(查看系统级性能指标,如IO、进程队列)实时监控服务器状态。ab(Apache Benchmark)或wrk工具模拟高并发请求,验证调优效果。例如:ab -n 10000 -c 1000 http://yourdomain.com/
其中-n表示总请求数,-c表示并发数,通过响应时间(Time per request)、吞吐量(Requests per second)等指标评估性能。