网站首页 > 精选文章 / 正文
今天我们来看一下Nginx的复用连接的功能--KeepAlive
keepalive 可以有效提高 http连接的使用效率。避免重复建立连接带来的消耗。
前面的文章分析Nginx建立连接的时候,如果Nginx是作为反向代理的,一个请求就会有2个连接,一个是对上游的,一个是对客户端的。
今天我们主要来看下客户端的keepalive。
它到底做了哪些事儿呢?
它可以将多个HTTP请求通过复用TCP连接来实现
1. 减少握手次数。这一点和连接池有点像。
2. 通过减少并发连接数,减少了服务器的资源消耗。大家知道服务器的文件描述符是有上限的,其次频繁的短链接还有可能造成大量的TIME_WAIT的情况。
3. 降低了TCP拥塞控制的影响。我们知道TCP有拥塞控制,所以窗口是逐渐增大的,如果我们的连接没有断开过,一直是保持在最佳状态。
有2个header:
Connection 如果是close就表示不启用Keepalive,请求完直接关闭连接。如果是keepalive就表示启用
Keep-Alive 值是timeout=n,这里的n是代表多少秒,告知客户端连接会保存多少秒。
相关指令:
// 对于某些浏览器不启用Keepalive。如:ie
Syntax: keepalive_disable none | browser ...;
Default: keepalive_disable msie6;
Context: http, server, location
// 一个Keepalive连接,接收几个请求 这个例子是100
Syntax: keepalive_requests number;
Default: keepalive_requests 100;
Context: http, server, location
// 这里可以看到有2个timeout,
// 第一个:一个请求后75秒还没有下一个请求就关闭连接了。
// 第二个是: 上面提到的请求头里的Keep-Alive里的timeout
Syntax: keepalive_timeout timeout [header_timeout];
Default: keepalive_timeout 75s;
Context: http, server, location
Tags:keepalive_timeout
猜你喜欢
- 2024-12-10 教你如何搭建自主可控的私人云盘
- 2024-12-10 TCP漫谈之keepalive
- 2024-12-10 深入剖析阻塞式socket的timeout
- 2024-12-10 SpringBoot2 仿B站高性能前端+后端项目(完结)
- 2024-12-10 关于gzip压缩,我有新发现
- 2024-12-10 TCP漫谈之keepalive和time_wait
- 2024-12-10 Nginx动态请求如何处理?
- 2024-12-10 MQTT:心跳机制(Keep Alive)
- 2024-12-10 京东大佬细说:Nginx反向代理时保持长连接,看完直呼"学到了!"
- 2024-12-10 nginx之keepalive详解及配置