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服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网 ...
随机推荐
- NeHe OpenGL教程 第八课:混合
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Win7+VMware Workstation环境下的CentOS-Linux网络连接设置
Win7+VMware Workstation环境下的CentOS-Linux网络连接设置 http://blog.sciencenet.cn/blog-430991-507041.html 近日 ...
- 转-Android客户端和服务端如何使用Token和Session
http://www.software8.co/wzjs/yidongkaifa/6407.html 对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不 ...
- 并发工具类(三)控制并发线程数的Semaphore
原文:http://ifeve.com/concurrency-semaphore/#more-14753 简介 Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程, ...
- windows service的继承类ServiceBase
https://msdn.microsoft.com/zh-cn/library/system.serviceprocess.servicebase.exitcode(v=vs.80).aspx 在停 ...
- Spring中的AOP应用
AOP被称为面向切面编程,AOP中的几个重要概念是: 1.切面.切面就是要实现的功能.切面通常是在多数方法中会用到的相同功能,如写日志. 2.连接点.连接点就是应用程序执行过程中插入切面的地点.如:方 ...
- 为什么选择 Yeoman 及 Yeoman 的安装
今天向您介绍一个我刚接触到的比较新的网络前端开发工具: Yeoman . 什么是Yeoman? Yeoman是Google的团队和外部贡献者团队合作开发的一个项目.通过内部三个工具(yo,grunt, ...
- dede文章页调用当前栏目链接方法
DedeCMS内容页调用当前栏目其实用下来是调用不出来的,{dede:field.typename/}是有效的,可是 {dede:field.typeurl/}却调不出文档当前栏目所在目录链接URL. ...
- Java中数字操作
public static void main(String[] args) throws Exception { { //Math函数的四舍五入,注意负数的时候小数位<=0.5都会被舍去,&g ...
- 彻底删除mysql服务
http://wenku.baidu.com/link?url=XEOFkNXElJV6FoBDOs7m7BlDUv9-ZuLbRbeVwbMa7AXa8ukZ6oIpiYYy3gNnITmP911M ...