首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

HTTP/1.1客户端:如何确定良好的保活超时默认值?

确定良好的保活超时默认值是通过以下几个步骤来完成的:

  1. 了解保活超时的概念:保活超时是指在HTTP/1.1协议中,客户端与服务器之间的连接在一段时间内没有活动时,客户端会发送一个保活请求给服务器,以确认连接是否仍然有效。如果服务器在一定时间内没有收到客户端的保活请求,就会认为连接已经断开,并关闭连接。
  2. 考虑网络延迟和服务器负载:保活超时的默认值应该考虑到网络延迟和服务器负载的因素。如果保活超时设置得太短,可能会导致频繁的保活请求,增加网络负载和服务器负载;如果设置得太长,可能会延迟检测到连接断开的情况。
  3. 参考HTTP/1.1规范建议:HTTP/1.1规范建议保活超时的默认值应该为2小时。这个值在大多数情况下是合理的,可以满足绝大部分的应用场景。
  4. 根据具体需求进行调整:根据实际应用的需求,可以根据以下因素进行调整:
    • 应用的网络环境:如果应用在高延迟的网络环境下运行,可以适当增加保活超时的默认值,以减少保活请求的频率。
    • 应用的连接负载:如果应用的连接负载较高,可以适当减小保活超时的默认值,以及时释放不活跃的连接资源。
  • 推荐的腾讯云相关产品和产品介绍链接地址:
    • 腾讯云负载均衡(CLB):https://cloud.tencent.com/product/clb
    • 腾讯云弹性伸缩(AS):https://cloud.tencent.com/product/as
    • 腾讯云CDN加速:https://cloud.tencent.com/product/cdn

请注意,以上答案仅供参考,具体的保活超时默认值需要根据实际情况和需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?

HTTP/1.1,所以 Keep-Alive 都是默认打开。...比如设置了 HTTP 长连接超时时间是 60 秒,web 服务软件就会启动一个定时器,如果客户端在完后一个 HTTP 请求后,在 60 秒内都没有再发起新请求,定时器时间一到,就会触发回调函数来释放该连接...TCPKeepAlive 连接建立之后,如果客户端一直不发送数据,或者隔很长时间才发送一次数据,当连接很久没有数据报文传输时如何确定对方还在线,到底是掉线了还是确实没有数据传输,连接还需不需要保持,...在Linux内核可以有对应参数可以设置时间、探测次数、探测时间间隔,以下为默认值: net.ipv4.tcp_keepalive_intvl = 75 net.ipv4.tcp_keepalive_probes...所以,TCP 机制可以在双方没有数据交互情况,通过探测报文,来确定对方 TCP 连接是否存活,这个工作是在内核完成

1.3K20

别搞混了!

HTTP/1.1,所以 Keep-Alive 都是默认打开。...比如设置了 HTTP 长连接超时时间是 60 秒,web 服务软件就会启动一个定时器,如果客户端在完后一个 HTTP 请求后,在 60 秒内都没有再发起新请求,定时器时间一到,就会触发回调函数来释放该连接...HTTP 长连接超时 TCP Keepalive TCP Keepalive 这东西其实就是 TCP 机制,它工作原理我之前文章写过,这里就直接贴下以前内容。 ?...当 TCP 探测报文发送给对端, 对端会正常响应,这样 TCP 时间会被重置,等待下一个 TCP 时间到来。 如果对端主机崩溃,或对端由于其他原因导致报文不可达。...所以,TCP 机制可以在双方没有数据交互情况,通过探测报文,来确定对方 TCP 连接是否存活,这个工作是在内核完成。 ?

49120
  • 字节一面:服务端挂了,客户端 TCP 连接还在吗?

    在 Linux 系统中,提供了一个叫 tcp_retries2 配置项,默认值是 15,如下图:这个内核参数是控制,在 TCP 连接建立情况下,超时重传最大次数。...当 TCP 探测报文发送给对端, 对端会正常响应,这样TCP 时间会被重置,等待下一个 TCP 时间到来。如果对端主机崩溃,或对端由于其他原因导致报文不可达。...当 TCP 探测报文发送给对端后,石沉大海,没有响应,连续几次,达到探测次数后,TCP 会报告该 TCP 连接已经死亡。...在 Linux 内核可以有对应参数可以设置时间、探测次数、探测时间间隔,以下都为默认值:net.ipv4.tcp_keepalive_time=7200net.ipv4.tcp_keepalive_intvl...如果设置了 HTTP 长连接超时时间是 60 秒,web 服务软件就会启动一个定时器,如果客户端在完后一个 HTTP 请求后,在 60 秒内都没有再发起新请求,定时器时间一到,就会触发回调函数来释放该连接

    2.2K30

    不为人知网络编程(十四):拔掉网线再插上,TCP连接还在吗?一文即懂!

    (六):深入地理解UDP协议并用好它》 《不为人知网络编程(七):如何让不可靠UDP变可靠?》...所以:TCP 机制可以在双方没有数据交互情况,通过TCP KeepAlive 机制探测报文,来确定对方 TCP 连接是否存活。...在 Linux 内核可以有对应参数可以设置时间、探测次数、探测时间间隔。...比如:一般Web 服务器都会提供 keepalive_timeout 参数,用来指定 HTTP 长连接超时时间。...如果设置了 HTTP 长连接超时时间是 60 秒,Web 服务软件就会启动一个定时器,如果客户端在完后一个 HTTP 请求后,在 60 秒内都没有再发起新请求,定时器时间一到,就会触发回调函数来释放该连接

    1.2K30

    字节一面:服务端挂了,客户端 TCP 连接还在吗?

    在 Linux 系统中,提供了一个叫 tcp_retries2 配置项,默认值是 15,如下图: 这个内核参数是控制,在 TCP 连接建立情况下,超时重传最大次数。...当 TCP 探测报文发送给对端, 对端会正常响应,这样 TCP 时间会被重置,等待下一个 TCP 时间到来。 如果对端主机崩溃,或对端由于其他原因导致报文不可达。...在 Linux 内核可以有对应参数可以设置时间、探测次数、探测时间间隔,以下都为默认值: net.ipv4.tcp_keepalive_time=7200 net.ipv4.tcp_keepalive_intvl...比如,web 服务软件一般都会提供 keepalive_timeout 参数,用来指定 HTTP 长连接超时时间。...如果设置了 HTTP 长连接超时时间是 60 秒,web 服务软件就会启动一个定时器,如果客户端在完后一个 HTTP 请求后,在 60 秒内都没有再发起新请求,定时器时间一到,就会触发回调函数来释放该连接

    1.6K20

    为什么说基于TCP移动端IM仍然需要心跳

    有兴趣了解IM/推送心跳技术文章,请参见: 《Android进程详解:一篇文章解决你所有疑问》 《Android端消息推送总结:实现原理、心跳、遇到问题等》 《微信团队原创分享:Android...版微信后台实战分享(进程篇)》 《微信团队原创分享:Android版微信后台实战分享(网络篇)》 《移动端IM实践:实现Android版微信智能心跳机制》 《移动端IM实践:WhatsApp...运气差,当前连接已失效,请求迟迟没有收到反馈直到超时,又需要一次连接建立过程,其效率甚至还不如 HTTP。而连接保持前提必然是检测连接可用性,并在连接不可用时主动放弃当前连接并建立新连接。...一般时间为 7200 s(详情请参见《TCP/IP详解》中第23章),失败后重试 10 次,每次超时时间 75 s。显然默认值无法满足我们需求,而修改过设置后就可以满足了吗?答案仍旧是否定。...考虑一种情况,某台服务器因为某些原因导致负载超高,CPU 100%,无法响应任何业务请求,但是使用 TCP 探针则仍旧能够确定连接状态,这就是典型连接活着但业务提供方已死状态,对客户端而言,这时最好选择就是断线后重新连接其他服务器

    1.5K30

    被鹅厂面怕了!

    当 TCP 探测报文发送给对端, 对端会正常响应,这样 TCP 时间会被重置,等待下一个 TCP 时间到来。 如果对端主机崩溃,或对端由于其他原因导致报文不可达。...当 TCP 探测报文发送给对端后,石沉大海,没有响应,连续几次,达到探测次数后,TCP 会报告该 TCP 连接已经死亡。...所以,TCP 机制可以在双方没有数据交互情况,通过探测报文,来确定对方 TCP 连接是否存活。 ?...以上就是对这个面试题回答。 这面试题其实在变相考察 TCP 机制作用。 ? ---- 接下来我们看看在「有数据传输」场景下一些异常情况: 第一种,客户端主机宕机,又迅速重启,会发生什么?...在 Linux 系统中,提供了一个叫 tcp_retries2 配置项,默认值是 15,如下图: ? 这个内核参数是控制,在 TCP 连接建立情况下,超时重传最大次数。

    55830

    设备

    TCP报文来实现。...TCP作用 1, 探测连接对端是否存活 在应用交互过程中,可能存在以下几种情况: (1), 客户端或服务器端意外断电、死机、崩溃、重启 (2), 中间网络已经中断,而客户端与服务器端并不知道...2, 防止中间设备因超时删除连接相关连接表 中间设备如防火墙等,会为经过它数据报文建立相关连接信息表,并为其设置一个超时时间定时器,如果超出预定时间,某连接无任何报文交互的话,中间设备会将该连接信息从表中删除...TCP设置 一般而言,探测主要在服务器端实现,如果应用层有相应机制时,传输层TCP就可以不用。...:此参数确定在收到响应之前,重传之间时间间隔。

    1.4K10

    长连接及心跳原理简介

    (2) 心跳   App实现长连接方式通常是采用应用层心跳,通过心跳包超时和其他条件(网络切换)来执行重连操作。...如果响应中没有Connection: Keep-Alive首部,客户端就认为服务器不支持keep-alive,会在发回响应报文之后关闭连接。HTTP/1.1以后Keep-Alive是默认打开。...默认时间为7200s(两小时),失败后重试10次,每次超时时间75s。显然默认值无法满足移动网络下需求; (2) 即便修改了(1)中默认值,也不能很好满足业务需求。...DHCP完成状态变迁流程如下: ? (4) DHCP租期问题对心跳影响   在设计心跳频率时,DHCP租期是一个不确定因素,但是原则是心跳最大间隔应该低于DHCP租期时间。   ...(4) NAT超时机制对心跳   上一节已经分析到,NAT超时机制会带来一个问题,如果应用需要维持连接时间大于NAT网关设置,通信就会意外中断。

    3.8K30

    不为人知网络编程(十二):彻底搞懂TCP协议层KeepAlive机制

    对应,有三个重要参数: 1)tcp_keepalive_time,在TCP打开情况下,最后一次数据交换到TCP发送第一个探测包间隔,即允许持续空闲时长,或者说每次正常发送心跳周期,默认值为...7200s(2h); 2)tcp_keepalive_probes 在tcp_keepalive_time之后,没有接收到对方确认,继续发送探测包次数,默认值为9(次); 3)tcp_keepalive_intvl...,在tcp_keepalive_time之后,没有接收到对方确认,继续发送探测包发送频率,默认值为75s。...但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接HTTP协议,会在响应头加上Connection、Keep-Alive字段。 如下图所示: ?...HTTP 1.0 和 1.1 在 TCP连接使用方面的差异如下图所示: ?

    2.6K42

    不为人知网络编程(十二):彻底搞懂TCP协议层KeepAlive机制

    对应,有三个重要参数: 1)tcp_keepalive_time,在TCP打开情况下,最后一次数据交换到TCP发送第一个探测包间隔,即允许持续空闲时长,或者说每次正常发送心跳周期,默认值为...7200s(2h); 2)tcp_keepalive_probes 在tcp_keepalive_time之后,没有接收到对方确认,继续发送探测包次数,默认值为9(次); 3)tcp_keepalive_intvl...,在tcp_keepalive_time之后,没有接收到对方确认,继续发送探测包发送频率,默认值为75s。...但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接HTTP协议,会在响应头加上Connection、Keep-Alive字段。...如下图所示: 4.jpg HTTP 1.0 和 1.1 在 TCP连接使用方面的差异如下图所示:  5.jpg 通俗地总结一下: 1)HTTPKeep-Alive是为了让TCP连接活得更久一点,在发起多个

    1.2K20

    知乎千赞 TCP 文章,我写错了一个点。。。

    超时重传时间 RTO 会如何变化? 在 Linux 下如何设置重传次数? …. 是不是哑口无言,无法回答? 不知道没关系,接下里我用三个实验案例,带大家一起探究探究这三种异常。...客户端 SYN 包超时重传最大次数,是由 tcp_syn_retries 决定默认值是 5 次;服务端 SYN、ACK 包时重传最大次数,是由 tcp_synack_retries 决定默认值是...那如果客户端不发送数据,什么时候才会断开处于 ESTABLISHED 状态连接? 这里就需要提到 TCP 机制。...这个机制原理是这样: 定义一个时间段,在这个时间段内,如果没有任何连接相关活动,TCP 机制会开始作用,每隔一个时间间隔,发送一个「探测报文」,该探测报文包含数据非常少,如果连续几个探测报文都没有得到响应...在 Linux 内核可以有对应参数可以设置时间、探测次数、探测时间间隔,以下都为默认值: net.ipv4.tcp_keepalive_time=7200 net.ipv4.tcp_keepalive_intvl

    1.3K40

    高效长连接:手把手教你实现自适应心跳机制

    前言 当实现具备实时性需求时,我们一般会选择长连接通信方式 而在实现长连接方式时,存在很多性能问题,如 长连接 今天,我将 手把手教大家实现自适应心跳机制,从而能高效维持长连接 目录 1...断线重连:断了之后继续重连回来 解决方案1:进程 整体概括如下: 解决方案2:心跳机制 这是本文重点,下节开始会详细解析 解决方案3:断线重连机制 原理 检测网络状态变化 & 判断连接有效性...心跳机制简介 心跳机制整体介绍如下 注:很多人容易混淆 心跳机制 & 轮询机制,此处给出二者区别 5....自适应心跳间隔时间 设计方案 基本流程 该方案需要解决有2个核心问题: 1.如何自适应计算心跳间隔 从而使得心跳间隔 接近 当前NAT 超时时间?...具体请看下图: 注:只有当心跳间隔 接近 NAT 超时时间 时,才能最大化平衡 长连接不中断 & 设备资源消耗最低问题。 2.如何检测 当前网络环境NAT 超时时间 发生了变化 ?

    2.4K32

    Too many open files (CLOSE_WAIT过多)解决方案:修改打开文件数上限值、调整TCPIP参数

    I 问题分析 1.1 分析方法 lsof - list open files lsof 是列出系统所占用资源,但是这些资源不一定会占用打开文件号;比如:共享内存,信号量,消息队列,内存映射并不占用打开文件号...如果调用 ServerSocket 类accept()方法和 Socket 输入流read()方法时引起线程阻塞,应该用 setSoTimeout() 方法设置超时超时判断是累计式)。...缺省设置是0,即超时永远不会发生。...,没有接收到对方确认,继续发送探测包次数,默认值为9(次) tcp_keepalive_intvl:在tcp_keepalive_time之后,没有接收到对方确认,继续发送探测包发送频率,默认值为...探测以确定该连接已经断开次数 net.ipv4.tcp_keepalive_intvl = 15 #默认值为75,探测消息发送频率 编辑完 /etc/sysctl.conf ,要重启 network

    2.3K21

    实战!我用“大白鲨”让你看见 TCP

    客户端 SYN 包超时重传最大次数,是由 tcp_syn_retries 决定默认值是 5 次;服务端 SYN、ACK 包时重传最大次数,是由 tcp_synack_retries 决定默认值是...那如果客户端不发送数据,什么时候才会断开处于 ESTABLISHED 状态连接? 这里就需要提到 TCP 机制。...这个机制原理是这样: 定义一个时间段,在这个时间段内,如果没有任何连接相关活动,TCP 机制会开始作用,每隔一个时间间隔,发送一个「探测报文」,该探测报文包含数据非常少,如果连续几个探测报文都没有得到响应...在 Linux 内核可以有对应参数可以设置时间、探测次数、探测时间间隔,以下都为默认值: net.ipv4.tcp_keepalive_time=7200 net.ipv4.tcp_keepalive_intvl...,则会启动机制 tcp_keepalive_intvl=75:表示每次检测间隔 75 秒; tcp_keepalive_probes=9:表示检测 9 次无响应,认为对方是不可达,从而中断本次连接

    1.6K61

    Linux | 如何保持 SSH 会话处于活动状态

    TCP 超时是指 TCP 连接或网络操作在认为进程失败之前等待响应持续时间。在 Linux 中,TCP 超时设置确定 TCP 连接或操作在假设数据包丢失或连接无响应之前应等待多长时间。...SSH 提供了保持会话活动机制,我们将在下面向您展示。 如何保持 SSH 会话处于活动状态 保持 SSH 会话处于活动状态是一个涉及客户端和服务器端配置过程。...默认值为 3。 也就是说,客户端每隔120秒(2分钟)就会向服务器发送一条keepalive消息,共发送30次。120 * 30 = 3600 秒,即一小时。...如果在发送客户端活动消息时达到此阈值,SSH 服务器将断开客户端连接,从而终止会话。默认值为 3。...SSH 超时好处显而易见,它们可以自动终止空闲会话,从而降低未经授权访问和潜在攻击风险,从而对网络安全做出贡献。 另一方面,过分地应用超时也会带来缺点。

    1.3K40

    数据库连接池配置(案例及排查指南)

    ,由于数据库良好特性和服务稳定性,使得我们工作几乎离不开,而数据库连接池因为连接复用优势也被广泛使用,但凡事不可能只有好处而没有代价,使用连接池一个最直接代价就是需要配置一堆参数。...一、连接池配置 1.1 maxWait 参数表示从连接池获取连接超时等待时间,单位毫秒,需要注意这个参数只管理获取连接超时。...其实,keepAlive 这个参数是在 druid 1.0.28 后新增,并且默认值是 false,即不进行连接。 那么需要连接,是不是将 keepAlive 配置成 true 就完事了呢?...虽然 true 的确是开启了机制,但是应该多少个,心跳检查规则是什么,这些都需要正确配置,否则还是可能事与愿违。...这里需要了解几个相关参数:minIdle 最小连接池数量,连接数量,空闲连接超时踢除过程会保留连接数(前提是当前连接数大于等于 minIdle),其实 keepAlive 也仅维护已存在连接

    1.3K20

    数据库连接池配置(案例及排查指南)

    引言 想必本文读者对数据库都不会陌生,由于数据库良好特性和服务稳定性,使得我们工作几乎离不开,而数据库连接池因为连接复用优势也被广泛使用,但凡事不可能只有好处而没有代价,使用连接池一个最直接代价就是需要配置一堆参数...一、连接池配置 1.1 maxWait 参数表示从连接池获取连接超时等待时间,单位毫秒,需要注意这个参数只管理获取连接超时。...其实,keepAlive 这个参数是在 druid 1.0.28 后新增,并且默认值是 false,即不进行连接。 那么需要连接,是不是将 keepAlive 配置成 true 就完事了呢?...虽然 true 的确是开启了机制,但是应该多少个,心跳检查规则是什么,这些都需要正确配置,否则还是可能事与愿违。...这里需要了解几个相关参数: minIdle 最小连接池数量,连接数量,空闲连接超时踢除过程会保留连接数(前提是当前连接数大于等于 minIdle),其实 keepAlive 也仅维护已存在连接

    2.7K30

    面试专题分享:计算机网络

    附:Linux服务器系统内核参数配置 tcp_keepalive_time,在TCP打开情况下,最后一次数据交换到TCP发送第一个探测包间隔,即允许持续空闲时长,或者说每次正常发送心跳周期...tcp_keepalive_probes 在tcp_keepalive_time之后,没有接收到对方确认,继续发送探测包次数,默认值为9(次)。...tcp_keepalive_intvl,在tcp_keepalive_time之后,没有接收到对方确认,继续发送探测包发送频率,默认值为75s。...发送频率tcp_keepalive_intvl乘以发送次数tcp_keepalive_probes,就得到了从开始探测到放弃探测确定连接断开时间; 举例:若设置,服务器在客户端连接空闲时候,每90秒发送一次探测包到客户端...当客户端关闭会话,或者 Session 超时失效时会话结束。 31. Cookie 和 Session 是如何配合呢?

    31620

    Elasticsearch High Level Rest Client偶现访问集群超时问题定位与解决

    tcp 连接。...= 9 net.ipv4.tcp_keepalive_time = 7200 也就是说如果一条tcp连接超过2小时没有流量的话,系统就会主动去探测该条连接进行,但是请求直接发送到网关,网关是不会直接回复...但是问题是该客户端是不会对连接进行探测,也就是连接池里可能会存在2小时没有流量连接;并且客户端也不会主动剔除连接池里实际已经不可用连接,例如本例中出现被服务端主动回复RST断掉连接,因此在客户端如果使用了连接池里已经不可用连接时候...问题原因已经清楚了,该如何解决?...实际上是需要客户端主动开启tcp keepalive, 进行连接,使得连接池里不会出现超过2小时没有流量连接,也使得服务端不会再显式对与网关之间tcp请求进行探测

    9.2K81
    领券