首页 > 其他分享 >keepaLive

keepaLive

时间:2024-11-28 16:45:25浏览次数:6  
标签:7200 tcp idle keepaLive 连接 空闲 keepalive

参数:
net.ipv4.tcp keepalive time=7200
net.ipv4.tcp keepalive intvl=75
net.ipv4.tcp keepalive probes=9

当启用(默认关闭)keepalive 时,TCP在连接没有数据通过的7200秒后发送keepalive 探测消息,当探测没有确认时,按75秒的重试频率重发一直发9个探测包都没有确认,就认定连接失效。
所以总耗时一般为:2小时11分钟(7200 秒+ 75 秒*9 次)

server 端开启TCP keepalive 两种方式:
ServerBootstrap bootstrap =new ServerBootstrap();
bootstrap.childoption(channeloption.SO_KEEPALIVE,true)
bootstrap.childoption(Niochanneloption,of(standardsocketoptions,SO_KEEPALIVE), true)

除了tcp层的keepalive之外,我们普遍还需要在应用层启动keepalive,一般称之为:应用心跳(心跳机制)

为什么应用还要做心跳?

1、协议分层,各层关注点不同,网络传输层关注网络是否可达,应用层关注是否能正常提供服务
2、tcp的keepalive默认关闭,并且经过路由等中转设备后keepalive包有可能被丢弃
3、tcp层的keepalive时间太长,默认>2小时,虽然可改,但是属于系统参数一旦改动影响该机器上的所有应用

应用何时发送心跳消息?

1、定时keepalive消息,keepalive 消息与服务器正常业务消息交换完全不关联,定时就发送
缺点:浪费资源,因为业务消息的正常收发侧面证明了网络和服务是正常的
2、ldle 监测:负责诊断,诊断后做出不同的行为,一般用来配合keepalive ,减少keepalive
应用心跳较好的方案:开启空闲监测,判定为Idle时才发keepalive,有其他数据传输的时候,不发送keepalive

idle的优势:
快速释放损坏的、恶意的、很久不用的连接,让系统时刻保持最好的状态
实际应用中:结合起来使用。按需keepalive,保证不会空闲,如果空闲,关闭连接。

Netty提供的idle检测机制:
netty提供了一个IdlestateHandler,它是ChannelDuplexHandler类型的,可以用于检测channel是否处于读写空闲的状态

idle监测+keepalive的作用:
1,监测网络的可达性,服务状态是否正常
2,快速释放损坏的、恶意的、很久不用的连接,让系统时刻保持最好的状态

服务端添加read idle check,10s接收不到channel数据就断掉连接,保护自己,瘦身
客户端添加write idle check+keepalive,5s不发送数据就发送一个keepalive,避免连接被断,也避免频繁keepalive

readerldleTime 读数据的空闲时间
writerldleTime:写数据的空闲时间
allldleTime读或写的空闲时间

简述为什么要做Keepalive与idle监测,以及如何做,有什么要注意的地方

,keepalive是为了检测服务的健康状态能近实时的掌握网络状况和服务运行状况
2,tcp协议栈是有Keepalvie机制的,但默认未开启,不过就算开启,TCP 在连接没有数据通过的7200秒后发送keepalive 探测消息,当探测没有确认时,按75秒的重试频率重发,一直发9 个探测包都没有确认,就认定连接失效,总时长2 小时11 分钟(7200 秒+ 75 秒* 9 次),时间太长了
3,除了在tcp网络层开启keepalive之外,我们普遍还需要在应用层启动keepalive,一般称之为:应用心跳,因为协议分层,各层关注点不同,网络传输层关注网络是否可达,应用层关注是否能正常提供服务,且tcp的keepalive默认关闭,并且经过路由等中转设备后keepalive包有可能被丢弃,以及tcp层的keepalive时间太长,默认>2小时,虽然可改,但是属于系统参数一旦改动影响该机器上的所有应用
4,要做ide检测一般用来配合keepalive,减少keepalive 消息,空闲监测+判定为Idle时才发keepalive,有其他数据传输的时候,不发送keepalive ,无数据传输超过一定时间,判定为Idle,再发keepalive

标签:7200,tcp,idle,keepaLive,连接,空闲,keepalive
From: https://www.cnblogs.com/Eduhg/p/18573927

相关文章

  • Linux搭建nginx+keepalived 高可用(主备+双主模式)
    keepalived简介反向代理及负载均衡参考:nginx反向代理与负载均衡当你了解会搭建nginx负载均衡后,需要考虑nginx这台服务器的安全性啦,如果只有一台,这台nginx一出问题,web就会无法访问的情况,所以为了应对这种情况,就需要两台nginx做主备服务器。nginx+keepalived如下图所示 在nginx......
  • 什么是keepalived
    Keepalived是一款用于提高网络服务可用性和可靠性的Linux工具,常用于构建高可用性架构。其主要功能是通过虚拟路由冗余协议(VRRP)实现故障转移,确保服务的持续运行,避免单点故障。Keepalived主要用于以下场景:1. 高可用性(HA):Keepalived可以配合LVS(LinuxVirtualServe......
  • keepalived双机热备方案实现Nginx高可用
    问题描述只用一台Nginx做反向代理,如果这台Nginx出现故障(比如宕机),则服务不可用。以下给出keepalived双机热备方案实现Nginx高可用的方法。先介绍几个概念:高可用高可用(HighAvailability)是指系统或服务能够在面对硬件故障、软件崩溃、网络问题等各种故障情况下,仍然保持......
  • Keepalived+Mysql实现高可用配置总结
    通过本文,大家将学习到以下相关知识内容:1、什么是高可用服务2、Keepalived简介3、Keepalived常见应用场景4、Keepalived高可用故障切换原理介绍5、VRRP协议介绍6、配置实现Keepalived监控Mysql7、Keepalived配置文件介绍8、Keepalived常见问题列举一、什么是高可用服务......
  • nginx+keepalived实现高可用
    在之前的文章已经提到怎么实现keepalived的双机热备,现在我们就结合nginx来实现高可用1、nginx的部署1.1依赖安装在线安装依赖yum-yinstallgccgcc-c++pcrepcre-develzlibzlib-developensslopenssl-devel1.2nginx的安装https://nginx.org/en/download.html下载......
  • keepalived+nginx实现高可用的案例详解(主主模式)
    文章目录前言keepalived主备模式和主主模式有什么区别1.主备模式(Master-BackupMode)2.主主模式(Active-ActiveMode或DualMasterMode)主备模式vs主主模式的区别总结:环境案例实现具体步骤ngx1ngx2验证前言keepalived主备模式和主主模式有什么区别Keepali......
  • 负载均衡Keepalived+LVS
    Keepalived+LVSLVS架构中,不管是NAT模式还是DR模式,当后端的RS宕掉时,调度器依然会把请求转发到宕掉的RS上,这样的结果并不是我们想要的。其实,keepalived就可以解决该问题,它不仅仅有高可用的功能,还有负载均衡的功能。在调度器上只要安装了keepalived,就不用再安装ipvsadm了,也不用去......
  • linux集群 keepalived+nginx实现高可用集群
    用keepalived配置高可用搭建高可用集群高可用集群,即“HA集群”,也常称作“双机热备”,用于关键业务。常见实现高可用的开源软件有heartbeat和keepalived,其中keepalived还有负载均衡的功能。这两个软件类似,核心原理都是通过心跳线连接两台服务器,正常情况下由一台服务器提供服务,......
  • # 高可用的并发解决方案nginx+keepalived(三)
    高可用的并发解决方案nginx+keepalived(三)一、Nginx搭建图片服务器针对任何站点,几乎都要访问图片,而一个网页里面几乎有好些张图片,这时候会占据大量tomcat连接,造成大量并发,我们可以通过Nginx配置直接访问硬盘里的图片,绕开tomcat。1、在CentOS7服务器上,创建/usr/local/im......
  • 负载均衡与Keepalived高可用部署
    负载均衡框架节点:web-7web-8,lb-5,lb-6四个节点都安装好nginx以及php将all-rpm.tgz传输到root目录下执行即可(需要先行配置yum用来安装createrepo)#!/bin/bashmvall-rpm.tgz/etc/yum.repos.d/groupaddwwwuseradd-m-gwww-s/sbin/nologinwwwcd/etc/yum.re......