- 浏览: 111051 次
- 性别:
- 来自: 北京
文章分类
最新评论
很多人都知道TCP并不会去主动检测连接的丢失,这意味着,如果双方不产生交互,那么如果网络断了或者有一方机器崩溃,另外一方将永远不知道连接已经不可用了。检测连接是否丢失的方法大致有两种:keepalive和heart-beat。
Keepalive是很多的TCP实现提供的一种机制,它允许连接在空闲的时候双方会发送一些特殊的数据段,并通过响应与否来判断连接是否还存活着(所谓keep~~alive)。我曾经写过一篇关于keepalive的blog,但后来我也发现,其实keepalive在实际的应用中并不常见。为何如此?这得归结于keepalive设计的初衷。Keepalive适用于清除死亡时间比较长的连接。
比如这样的场景:一个用户创建tcp连接访问了一个web服务器,当用户完成他执行的操作后,很粗暴的直接拨了网线。这种情况下,这个tcp连接已经断开了,但是web服务器并不知道,它会依然守护着这个连接。如果web server设置了keepalive,那么它就能够在用户断开网线的大概几个小时以后,确认这个连接已经中断,然后丢弃此连接,回收资源。
采用keepalive,它会先要求此连接一定时间没有活动(一般是几个小时),然后发出数据段,经过多次尝试后(每次尝试之间也有时间间隔),如果仍没有响应,则判断连接中断。可想而知,整个周期需要很长的时间。
所以,如前面的场景那样,需要一种方法能够清除和回收那些在系统不知情的情况下死去了很久的连接,keepalive是非常好的选择。
但是,在大部分情况下,特别是分布式环境中,我们需要的是一个能够快速或者实时监控连接状态的机制,这里,heart-beat才是更加合适的方案。
Heart-beat(心跳),按我的理解,它的原理和keepalive非常类似,都是发送一个信号给对方,如果多次发送都没有响应的话,则判断连接中断。它们的不同点在于,keepalive是tcp实现中内建的机制,是在创建tcp连接时通过设置参数启动keepalive机制;而heart-beat则需要在tcp之上的应用层实现。一个简单的heart-beat实现一般测试连接是否中断采用的时间间隔都比较短,可以很快的决定连接是否中断。并且,由于是在应用层实现,因为可以自行决定当判断连接中断后应该采取的行为,而keepalive在判断连接失败后只会将连接丢弃。
关于heart-beat,一个非常有趣的问题是,应该在传输真正数据的连接中发送“心跳”信号,还是可以专门创建一个发送“心跳”信号的连接。比如说,A,B两台机器之间通过连接m来传输数据,现在为了能够检测A,B之间的连接状态,我们是应该在连接m中传输“心跳”信号,还是创建新的连接n来专门传输“心跳”呢?我个人认为两者皆可。如果担心的是端到端的连接状态,那么就直接在该条连接中实现“心跳”。但很多时候,关注的是网络状况和两台主机间的连接状态,这种情况下, 创建专门的“心跳”连接也未尝不可。
原文地址:http://blog.csdn.net/historyasamirror/archive/2011/05/14/6419916.aspx
发表评论
-
LVS简介
2011-03-21 17:58 708LVS可称为Linux虚拟服 ... -
CYGWIN SSH Server 配置
2011-03-23 10:16 6031. 从[url]www.cywin.com[ ... -
ubuntu10 iso方式安装
2011-03-28 11:31 786一、下载Ubuntu硬盘安装光盘ISO镜像包 下载地址 ... -
ubuntu分区
2011-03-28 14:03 758/boot 分区,256M,文件系 ... -
Ubuntu 小企鹅输入法fcitx安装及设置
2011-03-28 14:08 1039ubuntu用了有一段时间 ... -
linux常用命令
2011-03-28 14:25 7371.关于文件/目录 ... -
ubuntu 安装 opera
2011-03-28 14:27 8231.sudo gedit /etc/apt/sources.l ... -
ubuntu下设置tomcat成为启动服务
2011-03-29 14:18 7861.将tomcat6下的catalina.sh拷贝到/etc/ ... -
linux启动项
2011-03-29 14:37 656、相关基础知识点 1)re ... -
ubuntu10启动window
2011-03-31 11:38 767命令行进入/boot/grub目录,gedit打开grub.c ... -
LINUX目录详解
2011-03-31 13:17 581/ 根目录 │ ├boot/ Li ... -
ubuntu启动图形界面
2011-04-10 13:45 1154/etc/X11/default-display-man ... -
linux出现 DISPLAY 尚未设置 解决方法
2011-04-11 09:05 2316现在root用户目录下执行#xhost +然后#su - or ... -
Linux编辑器vi使用方法详细介绍
2011-05-12 13:18 750vi编辑器是所有Unix及 ... -
ubuntu10.04下低画质进不了图形化解决
2011-06-14 16:46 801Xorg -configure重新配置xserver vi ... -
Rsync简介
2011-07-15 13:10 708目录: 问题 替代品 R ... -
linux关机命令
2011-07-20 21:11 713数据同步写入磁盘: sync 在 Linux 系统中,为了加 ... -
suid,sgid,sticky bit简介
2011-07-21 11:20 769三种特殊权限简介SUID当一个设置了SUID 位的可执行文件被 ...
相关推荐
mysql主主复制+keepalive 这是keepalive1.1.17.tar.gz
安装keepalived时缺少的一些包,收集起来共享,包括 autoconf-2.63-5.1.el6.noarch.rpm automake-1.11.1-1.2.el6.noarch.rpm cluster-glue-1.0.5-2.el6.i686.rpm cluster-glue-libs-1.0.5-2.el6.i686.rpm cluster-...
keepalive--aarch64.rar
---05Lucene的API介绍-复杂查询.mp4┃---06ElasticSearch简介.mp4┃---07ES和Solr的对比.mp4┃---08CentOS7的安装.mp4┃---09CentOS7的特殊命令.mp4┃---10keepalived说明.mp4┃---11虚拟keepalive
centos 下keepalived离线安装rpm包,亲测
-k --keepalive Using the --keepalive flag will add the Connection: Keep-Alive header to the HTTP request. On vulnerable servers, this will increase the duration of connections considerably. -p, --...
1. 如何加大tomcat连接数 在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有: minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessors:最大连接线程数...
本文主要介绍mescroll.js+keepAlive+meta属性记住滚动位置,比keepAlive 1.0版本代码更简洁
springboot keepalive 服务端,客户端测试
Centos7搭建lvs+keepalive负载均衡集群项目可实施文档。
1.DHCP R19---有个ACL,可以直接删掉 R17---e0/1口没有做authentication R18---e0/1口没有做authentication ======================... R22和R23的keepalive mode 一个是双向 一个是被动 将R23的mode改为 bidirectional
keepalive的安装包,有需要keepalive低版本安装包的前来下载。 适用于mysql 5.6及以上版本,需要安装文档请继续等待了。
Keepalived for Linux - Version 2.2.7 - CentOS 7.9 X64 内网离线编译资源包 包含编译Keepalived 所需的环境 环境到对应目录,使用 rpm -Uvh *.rpm --nodeps --force 安装即可 编译教程可以参考网上的教程 ...
基于vue-cli3.0版本,用keep-alive组件实现案例: (1)'表单'跳转'阅读活动协议页'再返回 缓存表单数据 (2)'信息列表'跳转'列表详情页'再返回 缓存列表滚动位置
react-keepalive-router 一介绍 基于react 16.8+ , react-router 4+开发的react缓存组件,可以用作缓存页面组件,类似vue的keepalive封装vue-router的效果功能。 采用react hooks全新api ,支持缓存路由,手动解除...
It is now possible to specify KeepAliveTimeout in milliseconds. NameVirtualHost directive No longer needed and is now deprecated. Override Configuration The new AllowOverrideList directive allows more...
前端大厂最新面试题-keepalive.docx
centos7-lvs+keepalive部署.
keepalive--aarch64
-k Use HTTP KeepAlive feature -d Do not show percentiles served table. -S Do not show confidence estimators and warnings. -q Do not show progress when doing more than 150 requests -l Accept ...