Nginx 配置优化 TIME_WAIT 问题
1. 启用 upstream keepalive 连接复用
upstream backend {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
# 启用 keepalive 连接池
keepalive 32;
# 设置空闲连接超时时间
keepalive_timeout 30s;
# 每个连接最大请求数
keepalive_requests 1000;
}
server {
listen 80;
location / {
proxy_pass http://backend;
# 启用 HTTP/1.1 以支持 keepalive
proxy_http_version 1.1;
proxy_set_header Connection "";
# 其他代理设置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
2. Nginx 自身连接优化配置
# 在 http 块中添加
http {
# 减少 TIME_WAIT 状态连接的超时时间
keepalive_timeout 30s;
# 设置客户端连接的 keepalive 超时
keepalive_requests 1000;
# 启用高效的文件传输模式
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}
检查 nginx 配置语法
nginx -t
重新加载配置
nginx -s reload
3. 系统层面优化(配合 Nginx)
# 编辑 /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_tw_buckets = 5000
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# 应用配置
sysctl -p
4. 关键配置项说明
keepalive 32
: 设置与后端服务器的 keepalive 连接池大小keepalive_timeout
: 设置空闲连接的超时时间,减少 TIME_WAIT 状态持续时间proxy_http_version 1.1
: 使用 HTTP/1.1 协议支持连接复用proxy_set_header Connection ""
: 清除 Connection 头部以保持连接
通过这些配置可以有效减少 Nginx 产生的 TIME_WAIT 连接数,提高服务器性能。