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服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网 ...
随机推荐
- dede的幻灯片除了首页其他页面也显示的方法,
<script language='javascript'> linkarr = new Array(); picarr = new Array(); textarr = new Arra ...
- linux下批量修改文件名之rename
最近因为突然用到需匹配更换文件名,发现rename命令真是 简单好用,和sed语法及vim 替换很相似. 1. 更改文件名后缀 rename 's/\.txt/\.html/' * 2.增加文件名后缀 ...
- jQuery的jsonp跨域是这么回事.
实现跨域请求的有iframe,img,script中的src属性.那么jquery是如何解决跨域请求的呢? 一:项目jsonp2中有个app.js文件,代码如下: function app(json) ...
- 50. Pow(x, n) (编程技巧)
Implement pow(x, n). double sum = 1; if (n > 0) { while ((n--) > 0) sum *= x; return sum; } el ...
- hive处理hbase数据
CREATE EXTERNAL TABLE table1( key string, zoneid int, result int, ) STORED BY 'org.apache.hadoop.hiv ...
- Caught exception while loading file struts-default.xml 错误
严重: Exception starting filter struts2 Caught exception while loading file struts-default.xml - [unkn ...
- 程序员必备:Oracle日常维护命令
上一篇讲了Linux的日常维护命令,这篇讲讲Oracle的日常维护命令.工作中需要使用Oracle数据库的童鞋们,相信或多或少都需要对Oracle做一些基本的维护操作,例如导入导出总该有吧?( ...
- 菜鸟-手把手教你把Acegi应用到实际项目中(4)
今天就讲个ConcurrentSessionFilter. 在Acegi 1.x版本中,控制并发HttpSession和Remember-Me认证服务不能够同时启用,它们之间存在冲突问题,这是该版本的 ...
- 《Head First 设计模式》ch.2 观察者(Observer)模式
观察者模式 定义了对象之间一对多以来,这样一来,当一个对象改变状态时,它所有的依赖者都会收到通知并自动更新 设计原则-松耦合 松耦合将对象之间的互相依赖降到了最低——只要他们之间的接口仍被遵守 观察者 ...
- Beginning SDL 2.0(1) SDL功能简介
原文链接为 http://wiki.libsdl.org/Introduction. 由于近期整理音视频可视化的技术,发现好久不更新的SDL发布了2.0版本,以前也没有过于关注,这里准备尝试下.了解S ...