MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Nginx的复用连接的功能之KeepAlive

2024-12-10 15:14 huorong 精选文章 6 ℃ 0 评论

今天我们来看一下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

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言