nginx之keepalive
一:设置
keepalive_timeout 0;
发curl:
[xxx ~]$ curl -H "Keep-Alive: 60" -H "Connection: keep-alive" '10.195.100.22:015/a.php'
tcpdump:
[xxx~]# tcpdump -i eth1 -n host 10.195.100.22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size bytes
::54.008723 IP 10.46.43.13. > 10.195.100.22.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::54.040827 IP 10.195.100.22. > 10.46.43.13.: Flags [S.], seq , ack , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::54.040846 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::54.040909 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::54.073615 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::54.075765 IP 10.195.100.22. > 10.46.43.13.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::54.075775 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::54.075812 IP 10.195.100.22. > 10.46.43.13.: Flags [F.], seq , ack , win , options [nop,nop,TS val ecr ], length
::54.075818 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::54.075871 IP 10.46.43.13. > 10.195.100.22.: Flags [F.], seq , ack , win , options [nop,nop,TS val ecr ], length
::54.108547 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
发现服务端主动断开了连接
使用nc和telnet
[xxx ~]$ nc 10.195.100.22
GET /a.php HTTP/1.1
host:client.map.baidu.com
Connection: keep-alive
Keep-Alive: HTTP/1.1 OK
Date: Sun, Jul :: GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Vary: Accept-Encoding
Set-Cookie: BAIDUID=1556C9779F393DA51F0AF097670ADB40:FG=; expires=Mon, -Jul- :: GMT; max-age=; path=/; domain=.baidu.com; version=
P3P: CP=" OTI DSP COR IVA OUR IND COM "
tracecode:
Server: Apache a [xxx ~]$ telnet 10.195.100.22
Trying 10.195.100.22...
Connected to xxx (10.195.100.22).
Escape character is '^]'.
GET /a.php HTTP/1.1
host:client.map.baidu.com
Connection: keep-alive
Keep-Alive: HTTP/1.1 OK
Date: Sun, Jul :: GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Vary: Accept-Encoding
Set-Cookie: BAIDUID=51ACA99FB5239F18891DAD65A018F0BF:FG=; expires=Mon, -Jul- :: GMT; max-age=; path=/; domain=.baidu.com; version=
P3P: CP=" OTI DSP COR IVA OUR IND COM "
tracecode:
Server: Apache a Connection closed by foreign host.
tcpdump:
[xxx ~]# tcpdump -i eth1 -n host 10.195.100.22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size bytes
::50.516727 IP 10.46.43.13. > 10.195.100.22.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::50.552093 IP 10.195.100.22. > 10.46.43.13.: Flags [S.], seq , ack , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::50.552107 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::57.006536 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::57.042492 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::57.042504 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::57.080212 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::59.032504 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::59.067393 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::59.459524 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::59.493148 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::59.494975 IP 10.195.100.22. > 10.46.43.13.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::59.494982 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::59.494985 IP 10.195.100.22. > 10.46.43.13.: Flags [F.], seq , ack , win , options [nop,nop,TS val ecr ], length
::59.494990 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::59.495012 IP 10.46.43.13. > 10.195.100.22.: Flags [F.], seq , ack , win , options [nop,nop,TS val ecr ], length
::59.528472 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
还是服务端主动断开了连接
二:设置
keepalive_timeout 60;
重启nginx(reload无效)
发curl
tcpdump:
[xxx ~]# tcpdump -i eth1 -n host 10.195.100.22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size bytes
::02.019610 IP 10.46.43.13. > 10.195.100.22.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::02.054175 IP 10.195.100.22. > 10.46.43.13.: Flags [S.], seq , ack , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::02.054197 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::02.054249 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::02.088571 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::02.091411 IP 10.195.100.22. > 10.46.43.13.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::02.091421 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::02.091544 IP 10.46.43.13. > 10.195.100.22.: Flags [F.], seq , ack , win , options [nop,nop,TS val ecr ], length
::02.126687 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::02.126703 IP 10.195.100.22. > 10.46.43.13.: Flags [F.], seq , ack , win , options [nop,nop,TS val ecr ], length
::02.126711 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
此时客户端断开了连接
nc或者telnet
[xxxx ~]$ telnet 10.195.100.22 Trying 10.195.100.22...
Connected to xxx (10.195.100.22).
Escape character is '^]'.
GET /a.php HTTP/1.1
host:client.map.baidu.com
Connection: keep-alive
Keep-Alive: HTTP/1.1 OK
Date: Sun, Jul :: GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: BAIDUID=C59340AAA043E8A90B1C04AE3695B17F:FG=; expires=Mon, -Jul- :: GMT; max-age=; path=/; domain=.baidu.com; version=
P3P: CP=" OTI DSP COR IVA OUR IND COM "
tracecode:
Server: Apache a GET /a.php HTTP/1.1
host:client.map.baidu.com
Connection: keep-alive
Keep-Alive: HTTP/1.1 OK
Date: Sun, Jul :: GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: BAIDUID=6CA0EEB34CC4FFEDDA20CA3893CF9E46:FG=; expires=Mon, -Jul- :: GMT; max-age=; path=/; domain=.baidu.com; version=
P3P: CP=" OTI DSP COR IVA OUR IND COM "
tracecode:
Server: Apache a Connection closed by foreign host.
tcpdump
[xxxx ~]# tcpdump -i eth1 -n host 10.195.100.22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size bytes
::04.742501 IP 10.46.43.13. > 10.195.100.22.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::04.777034 IP 10.195.100.22. > 10.46.43.13.: Flags [S.], seq , ack , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::04.777048 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::10.873033 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::10.907724 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::10.907735 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::10.942783 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::11.681531 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::11.717736 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::12.435530 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::12.471209 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::12.472896 IP 10.195.100.22. > 10.46.43.13.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::12.472903 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::18.466520 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::18.501110 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::18.501127 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::18.535716 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::19.046512 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::19.081658 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::19.530550 IP 10.46.43.13. > 10.195.100.22.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::19.565884 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::19.568107 IP 10.195.100.22. > 10.46.43.13.: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::19.568114 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::29.582270 IP 10.195.100.22. > 10.46.43.13.: Flags [F.], seq , ack , win , options [nop,nop,TS val ecr ], length
::29.582284 IP 10.46.43.13. > 10.195.100.22.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::29.582325 IP 10.46.43.13. > 10.195.100.22.: Flags [F.], seq , ack , win , options [nop,nop,TS val ecr ], length
::29.617689 IP 10.195.100.22. > 10.46.43.13.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
此时:在发送完第一个http请求后,10内服务端并没有断开连接,客户端可以再次发生http包,并且可以复用上次的tcp连接,act和seq号都是接着之前的连接来的。10s如无请求才会断开。
另外:建立tcp连接后,如果客户端在60s内没有发送一个完整的htttp请求包,服务端也会断开此次tcp连接
nginx之keepalive的更多相关文章
- 关于 Nginx upstream keepalive 的说明
模块是 HttpUpstreamModule,配置的一个例子: [shell]upstream http_backend { server 127.0.0.1:8080; keepalive 1 ...
- Nginx Upstream Keepalive 分析 保持长连接
Nginx Upstream长连接由upstream模式下的keepalive指令控制,并指定可用于长连接的连接数,配置样例如下: upstream http_backend { server ...
- 记一次线上由nginx upstream keepalive与http协议"协作"引起的接口报错率飙高事件
年前接到个任务,说要解决线上一些手机客户端接口报错率很高的问题.拿到了监控邮件,粗略一看,各种50%+的错误率,简直触目惊心.这种疑难杂症解决起来还是挺好玩的,于是撸起袖子action. 最终的结果虽 ...
- Nginx http keepalive针对客户端行为指令
keepalive 描述 多个http请求可以复用Tcp链接 减少握手次数 通过减少并发连接数减少服务器资源消耗 降低Tcp拥塞控制影响 Syntax: keepalive_disable none ...
- client,server,nginx 在使用keepAlive 专题
2. TCP keepalive overview In order to understand what TCP keepalive (which we will just call keepali ...
- 我为什么要谈KeepAlive(文末增加nginx 负载tcp长连接保持 demo)
http://blog.sina.com.cn/s/blog_e59371cc0102ux5w.html 最近工作中遇到一个问题,想把它记录下来,场景是这样的: 从上图可以看出,用户通过Client访 ...
- 转:nginx基础概念(keepalive、pipe)
keapalive 当然,在nginx中,对于http1.0与http1.1也是支持长连接的.什么是长连接呢?我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建 ...
- Nginx+keepalive 负载均衡
1 规划和准备 两台相同配置的web 用途 IP MASTER 192.168.1.100 BACKUP 192.1681.101 2 安装 两台接入服务器分别安装NginX和keepalived: ...
- nginx keepalive 双机
Nginx+keepalived双机热备(主从模式) 负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网 ...
随机推荐
- windows上传文件到linux
1.在putty的网站上下载putty跟pscp 2.安装ssh跟putty sudo apt-get install openssh-server sudo apt-get install putt ...
- Think in UML笔记第1章--为什么要UML
1.1 面向过程还是面向对象 面向过程和面向对象都是一种软件技术.例如把面向过程归纳为结构化程序设计.DFD图.ER模型.UC矩阵等,而面向对象则被归纳为继承.封装.多态.复用等具体的技术.事实上,上 ...
- DualPivotQuicksort 排序算法解析
DualPivotQuicksort是JDK1.7开始的采用的快速排序算法. 一般的快速排序采用一个枢轴来把一个数组划分成两半,然后递归之. 大量经验数据表面,采用两个枢轴来划分成3份的算法更高效,这 ...
- JDBC中的批量插入和乱码解决
字符集-乱码问题 用JDBC访问MySql数据库的时候,如果JDBC使用的字符集和MySql使用的字符集不一致,那么会导致乱码发生.解决办法当时是在使用JDBC的时候指定和数据库一样的字符集.我们可以 ...
- Eclipse CDT 代码高亮配置
效果图如下: 配置生效方式: 找到CDT的workspace目录中如下文件 X:\workspace\.metadata\.plugins\org.eclipse.core.runtime\.sett ...
- esriSRProjCSType Constants
ArcGIS Developer Help (Geometry) esriSRProjCSType Constants See Also esriSRProjCS2Type Constant ...
- Regional Changchun Online--Travel(最小生成树&& 并查集)
Travel Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- ios 对齐属性
四个容易混淆的属性:1. textAligment : 文字的水平方向的对齐方式1> 取值NSTextAlignmentLeft = 0, // 左对齐NSTextAlignme ...
- 01-Quartz2D介绍
01-PPT介绍 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !impo ...
- The Ninth Hunan Collegiate Programming Contest (2013) Problem F
Problem F Funny Car Racing There is a funny car racing in a city with n junctions and m directed roa ...