百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

nginx之keepalive详解及配置_nginx keepalived几种模式

off999 2025-02-20 17:29 30 浏览 0 评论

一、keepalive理解

什么是keepalive

keepalive是长连接的意思。客户端发起http请求前需要先与服务端建立TCP连接,每次TCP连接都需要三次握手来确定,三次交互不仅会增加消费时间,还会增加网络流量。http请求是请求应答式,如果能知道每个请求头与响应体的长度,就可以在一个连接上执行多个请求,这个就是所谓的长连接。

(注意:keepalive是tcp层长连接探活机制;keep-alive是应用层http协议使用,在其头部Connection字段中的一个值,只是代表客户端与服务之间需要保持长连接,可以理解为通过此字段来告诉nginx此连接需要维持长连接,处理完别直接关闭连接。)

如何确定请求头和响应体的长度?

1、请求头长度: 如果当前请求有body,Nginx需要客户端在请求头中指定content-length来表明body的大小,否则返回400。

 2、响应体长度: 在http协议中响应body长度的确定

http1.0:①响应头中有content-length,content-length即为body长度。客服端依照这个长度接收数据,接收完了就表示请求完成。②响应头中没有content-length,客户端会一直接收数据,知道服务端主动断开,才表示body接收完了。

http1.1:①chunked传输,响应头中有Transfer-encoding,body为流式输出,body被分成多个块,每块的开始会标识出当前块的长度,此时body不需要通过长度指定。②非chunked传输,响应头中有content-length则按照content-length来接收数据,没有content-length,则客户端接收数据,知道服务器主动断开。

是否可使用长连接的条件是什么?

可知响应体长度的情况下,当服务器输出完body后可以考虑使用长连接。长连接的条件限制如下:

客服端的请求头中的connection为close,则客户端要求不使用长连接。

客户端的请求头中的connection为keep-alive,则客户端要求使用长连接。

客户端的请求头中没有connection这个头,如果是http1.0协议默认为close,如果是http1.1协议默认为keep-alive。

keepalive时Nginx的等待时长是多少?

长连接时,Nginx在输出完响应体后,会设置当前连接的keepalive属性,然后等待客户端的下一次请求,同时也设置了一个最大等待时间,这个时间通过keepalive_timeout来配置,如果是0,则表示关掉长连接,此时不管客户端的connection值是什么都会强制设为close。

keepalive的优势是什么?

服务端确定是keepalive打开时,在响应的http头中也会有connection=Keep-Alive,否则为Close。如果connection值为colse,Nginx在响应完数据后就会关掉连接。所以对于请求量较大的Nginx来说,关掉keepalive最后会产生较多的time-wait状态的socket。当客户端的一次访问需要多次访问同一个server时,keepalive会大量减少time-wait的数量。

二、nginx的keepalive配置

nginx保持keepalive需做那些事情

1.client到nginx的连接是长连接

2.nginx到server的连接是长连接

nginx的文件配置

(1)配置TCP层keepalive探活机制的三个参数:

#情况1:

http {

server {

listen 127.0.0.1:3306 so_keepalive=on;#开启keepalive探活,探测策略走系统默认

}

}

#情况2:

http {

server {

listen 127.0.0.1:3306 so_keepalive=7m:75s:9;#把空闲时长从系统默认的5分钟改为了7分钟

}

}

其中so_keepalive有如下选择配置:

so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]

* on: 开启,探测参数更加系统默认值

* off: 关闭

* keepidle: 连接空闲等待时间

* keepintvl: 发送探测报文间隔时间

* keepcent: 探测报文重试次数

如果nginx未设置so_keepalive配置,则走系统默认的探活策略

(2)nginx与客户端(一般为浏览器、APP等)保持的长连接进行限制管理:

http {

keepalive_timeout 120s 120s;

keepalive_requests 100;

}

keepalive_timeout timeout [header_timeout];

第一个参数:客户端连接在服务器端空闲状态下保持的超时值(默认75s);值为0会禁用keep-alive,也就是说默认不启用长连接;第二个参数:响应的header域中设置“Keep-Alive: timeout=time”;告知浏览器对长连接的维持时间;官网介绍如下:



keepalive_requests number;

keepalive_requests:默认100,某个长连接连续处理请求次数限制,超过次数则该长连接被关闭;如果需要释放某个连接占用的内存,必须关闭该链接,内存不大的情况下,不建议开大该配置;在QPS较高的场景,则有必要加大这个参数;

(3)nginx与上游server保持长连接

http {

upstream BACKEND {

server 127.0.0.1:8000;

server 127.0.0.1:8001;

server 127.0.0.1:8002;

keepalive 300; //空闲连接数

keepalive_timeout 120s;//与上游空闲时间

keepalive_requests 100;//与上游请求处理最大次数

}

server{

listen 8080;

location /{

proxy_pass http://BACKEND;

proxy_http_version 1.1;

proxu_set_header Connection "";

}

}

}

keepalive:限制nginx某个worker最多空闲连接数,此处不会限制worker与上游服务长连接的总数;

keepalive_timeout:nginx与上游长连接最大空闲时间,默认值为60s;

keepalive_requests:nginx与上游长连接最大交互请求的次数,默认值为100;

三、应用场景

什么时候使用?

明显的预知用户会在当前连接上有下一步操作

复用连接,有效减少握手次数,尤其是https建立一次连接开销会更大

什么时候不用?

访问内联资源一般用缓存,不需要keepalive

长时间的tcp连接容易导致系统资源无效占用

相关推荐

windows远程桌面(远程桌面app安卓版)

要在WindowsServer2016上开启远程桌面服务,您可以按照以下步骤操作:1.**打开服务器管理器**:您需要登录到您的WindowsServer2016系统。2.**启用远程桌面...

网盘app下载安装(雀云网盘app下载安装)

因为这时的文件只是下载到云盘里,并没有下载到手机里,而在云盘里是不能执行安装程序的,需要把云盘里的安装包,下载到手机内存里面,才可以执行安装命令。现在相当于,你的快递已经在驿站签收了,随时都可以拿回来...

隐藏文件夹不显示(隐藏文件夹不显示出来)

如果,可能是文件被删除或移动到其他位置。隐藏文件是指在文件系统中设置了隐藏属性的文件,通过更改文件夹的设置可以显示或隐藏这些文件。如果文件夹显示隐藏文件的设置已经开启,但仍然找不到文件,可能是因为文件...

强制修改密码软件下载(强制密码修改器)

1.首先找回账户密码(适用于Android设备):如果您的设备与账户关联,可以访问账户的“找回密码”功能,通过重置密码来修改锁屏密码。2.使用其他登录方式(适用于iOS设备):如果您启用了Touch...

苹果ipad充不进电怎么办(苹果ipad充不进去电什么原因)

如果你发现你的iPad不能充电,那么你这样试一下,你看是不是充电的温度太低,你给他拿到一个比较温暖的房间里去,第2个就是你换一个充电器试一试,是不是那个充电器坏了,如果还不行的话,你可以把iPad重新...

无法正常启动0xc000005(无法正常启动你的电脑0xc0000001)

如果手机下载安装的第三方应用出现问题,无法正常使用,三星手机一般建议进行以下步骤排查及处理:1.关闭重新启动该应用。2.建议将此软件卸载重新安装尝试。3.更换其他版本尝试。4.更新下手机系统版本后安装...

无线网登录(无线网登录入口)

1.打开手机浏览器,访问192.168.0.1,输入用户名和密码就可以进入路由器管理界面。2.手机wifi连接路由器信号之后,会弹出对话框,需要输入用户名和密码(有的路由器只需要密码)。3.正确的输入...

恢复精灵免费版(恢复精灵app软件下载)

一般都是收费的。建议选择正规的软件。推荐你用《安易》数据恢复软件。聊天恢复精灵不需要电脑。因为聊天恢复精灵是属于线上的应用程序,只需要在电子设备里面下载安装聊天恢复精灵软件就可以直接使用不靠谱手机数据...

苹果系统官网下载地址(iphone官网ios下载)

PP助手、同步推等手机助手都可以下载已经下架的应用,这类助手有很多,一搜一大把,而且就我知道的PP助手还能选择下载历史版本,当然也有部分应用是没在商店上架的,他们是通过企业证书公布自己的应用,需要到官...

win10桌面切换(w10系统桌面切换)
win10桌面切换(w10系统桌面切换)

     win10桌面1和桌面2快速切换方法:1.按住win按键按键盘的【win】按键。2.再按Tab按键同时按下【tab】按键。3.点击桌面选项点击界面的桌面选项完成切换。具体方...

2025-12-19 23:51 off999

下载qq号安装(下载qq安装包)
下载qq号安装(下载qq安装包)

QQ不能更新和下载,可尝试一下办法:1,使用数据线,将手机和电脑连接,然后从电脑端下载,保证你不闪退,不掉线。2,将你手机桌面的QQ图标删除,彻底删除.从AppStore里下载.注:在你不联机的状态下,你可能用别的助手会闪退问题,推荐从...

2025-12-19 23:03 off999

系统之家在线一键重装系统(系统之家官方网站)
  • 系统之家在线一键重装系统(系统之家官方网站)
  • 系统之家在线一键重装系统(系统之家官方网站)
  • 系统之家在线一键重装系统(系统之家官方网站)
  • 系统之家在线一键重装系统(系统之家官方网站)
笔记本电脑上网卡多少钱一个月

收费有好几种!1.按流量收费,这适合不怎么上网看电影,下载的人.(想用就用,而且价格便宜)2.按小时收费,用电脑的无线连移动的无线,那有说明。(10元40小时/每月,20元100小时/每月等等,还是手...

电脑无法进入系统如何重装(电脑无法进入系统如何重装系统)
  • 电脑无法进入系统如何重装(电脑无法进入系统如何重装系统)
  • 电脑无法进入系统如何重装(电脑无法进入系统如何重装系统)
  • 电脑无法进入系统如何重装(电脑无法进入系统如何重装系统)
  • 电脑无法进入系统如何重装(电脑无法进入系统如何重装系统)
一键重装系统后一直黑屏(电脑一键重装系统后黑屏)

黑屏故障一般有四种情况:一,全黑。主机、显示器(包括指示灯)均不亮二,显示器的指示灯亮,主机的指示灯不亮三,显示器与主机的指示灯均亮且开关电源冷却风扇也正常旋转,但显示器不显示。四,动态黑屏,开机时显...

取消回复欢迎 发表评论: