美文网首页nginx
Nginx长连接

Nginx长连接

作者: 猪蹄胖 | 来源:发表于2018-09-11 17:02 被阅读1311次

讨论关于nginx的长连接和TIME-WAIT相关知识点

长连接

Nginx从 1.1.4 开始,实现了对后端机器的长连接支持,这意味着 Nginx 与后端机器的通信效率更高,后端机器的负担更低。

示例:

upstream http_backend {
        keepalive 16;
        server 127.0.0.1:8080;
}

server {

    location /http/ {
        proxy_pass http://http_backend;
        proxy_http_version 1.1; #设置http版本为1.1
        proxy_set_header Connection ""; #设置http头默认为长连接,不关闭
    }
}

默认使用http1.0,并且connection连接默认是close
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;

原理:

默认情况下 Nginx访问后端都是用的短连接HTTP1.0,一个请求来了,Nginx新开一个端口和后端建立连接,请求结束连接回收。如果像上面的配置一样设置了长连接,Nginx 会接受客户端的请求,处理完成之后Nginx继续保持和后端的长连接

如果并发请求超过了 keepalive 指定的最大连接数,Nginx 会启动新的连接 来转发请求,新连接在请求完毕后关闭,而且新建立的连接是长连接

keepalived

keepalive 指定的 数值 是 Nginx 每个 worker 连接后端的最大长连接数,而不是整个 Nginx 的。 而且这里的后端指的是所有的后端,而不是每一个后端。

TIME_WAIT

出现大量TIME_WAIT 状态的连接,使用以下命令验证之:

netstat -n | grep TIME_WAIT
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

从以下原理图中可以看出,发起tcp四次挥手的一方将会进入TIME_WAIT状态,而TIME_WAITE的等待时间默认是2MSL,MSL默认是2min。


image.png

nginx服务器出现大量TIME_WAIT,可能情况是keepalive设置的值太小,

原理:

Nginx 和后端的长连接不够用时 Nginx 会新建连接来处理新的请求,而我们的配置已经配置死了 HTTP1.1,建立连接后,后端认为是长连接而不会主动关闭连接一般有个空闲超时,关闭连接由 Nginx 来做了,所以 Nginx 会出现大量的 TIME_WAIT

默认情况下,NginxHTTP1.0 请求后端,后端处理完成后就主动关闭连接,所以 TIME_WAIT 在后端。

如果开启了长连接,而长连接又大量不够用,此时 Nginx 存在的 TIME_WAIT 可能会大量占用端口,导致端口用尽,如果用尽,后果很严重

小网站在被CC攻击时的连接数情况

image.png

相关文章

  • Nginx长连接

    讨论关于nginx的长连接和TIME-WAIT相关知识点 长连接 Nginx从 1.1.4 开始,实现了对后端机器...

  • nginx 长连接

    先理解下长连接和短链接 短连接: 短连接就是每次请求一个资源就建立连接,请求完成后连接立马关闭。每次请求都经过“...

  • nginx长连接

    这几天在看长连接相关的文章,记录一下感性上的理解。 长连接本质是就是普通的短连接,在释放的时候没有直接断开,而是放...

  • Nginx篇05——http长连接和keeplive

    nginx中http模块使用http长连接的相关配置(主要是keepalive指令)和http长连接的原理解释。 ...

  • nignx 优化 长连接,短连接

    nginx连接后端服务时,使用upstream的方式,并且设置keepalive可以建立长连接,减少创建连接的消耗...

  • Nginx 不同版本的配置

    nginx/1.10.3 (Ubuntu) 长连接登录 查看 linux 版本 lsb_release -a 安装...

  • Nginx的优化之--keepalive参数

    Nginx的优化之--keepalive参数 keepalive:设置长连接数量proxy_http_versio...

  • nginx优化

    nginx优化并发优化长连接压缩静态缓存一、并发优化nginx工作模式:主进程+工作进程 启动工作进程数量work...

  • ES-nginx 长连接和权限配置

    长连接配置 当你直接向es发送请求,你可以看到连接数是增加的: 通过nginx访问,结果如下: keepalive...

  • nginx处理长连接请求,解决gateway timeout错误

    console报错: gateway timeout , 报504错误 1.当系统中存在长连接 nginx配置文件...

网友评论

    本文标题:Nginx长连接

    本文链接:https://www.haomeiwen.com/subject/trwugftx.html