0
点赞
收藏
分享

微信扫一扫

Nginx 如何优化TIME_WAIT问题

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 连接数,提高服务器性能。

举报

相关推荐

0 条评论