龙空技术网

HTTP持久连接-Keep-Alive

简单印象 1344

前言:

而今我们对“keepalive_timeout 65”大体比较关心,姐妹们都需要分析一些“keepalive_timeout 65”的相关内容。那么小编在网摘上网罗了一些有关“keepalive_timeout 65””的相关资讯,希望我们能喜欢,咱们一起来了解一下吧!

HTTP并行连接可以提高符合页面的传输速度,但并行连接也存在一些缺点:

每个事务都会打开/关闭一条新的连接,会耗费时间和带宽

由于TCP满启动特性的存在,每条新连接的性能都会有所降低

可打开的并行连接数量实际上是有限的

持久连接有一些比并行连接更好的地方。持久连接降低了时延和连接建立的开销,将连接保持在已调谐状态,而且减少了打开连接的潜在数量。但是,管理持久连接时要特别小心,不然就会累积出大量的空闲连接,耗费本地以及远程客户端和服务器上的资源。

持久连接与并行连接配合使用可能是最高效的方式。现在,很多Web应用程序都会打开少量的并行连接,其中的每一个都是持久连接。持久连接有两种类型,比较老的HTTP/1.0+"keep-alive"连接,以及现代的HTTP/1.1"persistent"连接。

注:在HTTP/1.0中,默认的是短连接,没有正式规定 Connection:Keep-alive 操作;在HTTP/1.1中所有连接都是Keep-alive的,也就是默认都是持久连接的(Persistent Connection)

Nginx配置支持关闭持久连接,如下:

location / {keepalive_timeout 0;}

访问相同url,在Nginx配置keepalive_timeout 0;前,响应头截图如下:

Nginx配置keepalive_timeout 0;后,响应头截图如下:

使用tcpdump命令解释说明connection:keep-alive能实现持久连接,减少tcp连接建立:

tcpdump -n host 47.91.132.205 and port 80

图:connection:keep-alive下三次请求同一url

如上图,是在connection:keep-alive下请求同一url,tcpdump抓包的结果,不难看出,第一次请求,创建了tcp连接,后两次请求,都是基于持久连接下直接传输数据。

图:connection:close下两次请求同一url

如上图,是在connection:close下请求同一url,tcpdump抓包的结果,不难看出,第一次请求,创建了tcp连接,第二次请求也创建了tcp连接。

注:如果你的客户端和服务器之间有“哑代理(盲中继)”(即并不能有效识别connection头部的keep-alive,但会向下转发这个首部信息,从而造成客户端、服务端都认为代理接受持久连接,但事实上代理在一次TCP连接结束后放弃连接了),可能看不到上述的实操结果。

简单印象”头条号每天将不定时发布文章,内容大多为原创性技术相关或技术人的另一面生活,欢迎大家收藏、转发、评论或点击右上角的“关注”,支持我的头条号,也可以直接访问我的个人博客()查看最新撰写的内容。

标签: #keepalive_timeout 65