http中的KeepAlive

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 20:59   116   0

为什么要使用KeepAlive?

终极的原因就是需要加快客户端和服务端的访问请求速度。KeepAlive就是浏览器和服务端之间保持长连接,这个连接是可以复用的。当客户端发送一次请求,收到相应以后,第二次就不需要再重新建立连接(慢启动的过程),就可以直接使用这次的连接来发送请求了。在HTTP1.0及各种加强版中,是默认关闭KeepAlive的,而在HTTP1.1中是默认打开的。

HTTP头是Connection: Keep-Alive

要设置保持多少时间和连接使用:

Keep-alive: 300

KeepAlive是不是设置越长越好?

并不是这样的。KeepAlive在增加访问效率的同时,也会增加服务器的压力。对于静态文件是会提高其访问性能,但是对于一些动态请求,如果在一次和下一次的请求过程中占用了服务器的资源,则会导致意想不到的结果。

在nginx中关闭keepalive使用keepalive_timeout 0;就可以进行关闭。记住如果没有设置的话默认是开启的。

1、http的基础知识

http是一个请求——响应模式的典型范例,即客户端向服务器发送一个请求信息,服务器响应这个信息。

在老的http版本中:

每一个请求都创建一个TCP连接,当一次请求被响应后,tcp四次挥手,连接断开。

这个模式的优点:

简单,易实现,易理解,且满足无连接的特点。

这个模式的缺点:

效率低。

HTTP /1.0

在这个版本的协议上,如果客户端浏览器支持Keep-Alive,那么就在HTTP请求头部添加一个Connection:Keep-Alive,当服务器收到附带Connection:Keep-Alive的请求,也会在响应头部添加一个同样的字段来使用Keep-Alive。这样一来,客户端和服务器端之间的TCP连接就会保持,不会断开(超过Keep-Alive规定的时间,意外断电等情况外),当客户端发送另外一个到这个服务器的请求还是会使用这个已经建立的连接。

HTTP/1.1

在HTTP/1.1版本中,官方规定的Keep-Alive使用标准和在HTTP/1.0版本中有些不同,默认情况下所在HTTP1.1中所有连接都被保持,除非在请求头或响应头中指明要关闭:Connection: Close这也就是为什么Connection: Keep-Alive字段再没有意义的原因。另外,还添加了一个新的字段Keep-Alive:,因为这个字段并没有详细描述用来做什么,可忽略它。

Not reliable(不可靠)

HTTP是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive没能改变这个结果。另外,Keep-Alive也不能保证客户端和服务器之间的连接一定是活跃的,在HTTP1.1版本中也如此。唯一能保证的就是当连接被关闭时你能得到一个通知,所以不应该让程序依赖于Keep-Alive的保持连接特性,否则会有意想不到的后果

总结
1、当你的Server内存充足时,KeepAlive =On还是Off对系统性能影响不大。
2、当你的Server上静态网页(Html、图片、Css、Js)居多时,建议打开KeepAlive 。
3、当你的Server多为动态请求(因为连接数据库,对文件系统访问较多),KeepAlive 关掉,会节省一定的内存,节省的内存正好可以作为文件系统的Cache(vmstat命令中cache一列),降低I/O压力。
PS:当KeepAlive =On时,KeepAliveTimeOut的设置其实也是一个问题,设置的过短,会导致Apache 频繁建立连接,给Cpu造成压力,设置的过长,系统中就会堆积无用的Http连接,消耗掉大量内存,具体设置多少,可以进行不断的调节,因你的网站浏览和服务器配置而异。


减少域名解释的开销
对于HTTP/1.0来说可以充分利用浏览器默认最大并发连接数比HTTP/1.1多的好 处,实现不增加新域名的开销而更高的并行下载,减少域名解释的开销(注:IE 6,7在HTTP/1.0中默认最大并发连接数为4,在HTTP/1.1中默认最大并发连接数为2,IE8都为6,Firefox2在HTTP/1.0中 默认最大并发连接数为2 在HTTP/1.1中默认最大并发连接数为8,firefox 3默认都是6),根据10年7月Google索引的42亿个网页的统计报告,每张网页里包含29.39个图片,7.09个外部脚本,3.22个外部CSS 样式表,如果设置了Keep-Alive并且合理控制Keep-Alive TimeOut这个参数可以大量的节约连接的开销,提高相应速度。如果设置不好,在大并发的情况小,因维持大量连接而使服务器资源耗尽,而对于目前国内大 部分的用户使用的还是IE6,7的情况下关闭Keep-Alive可以充分利用浏览器默认最大并发连接数的好处实现不增加额外的开销页面快速的展示。

本文出自 “momo就是辣么萌” 博客,请务必保留此出处http://momo462.blog.51cto.com/10138434/1834127

转载于:https://www.cnblogs.com/guochuanrui/p/5734766.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP