- 浏览: 115199 次
- 性别:
- 来自: 北京
文章分类
最新评论
很多人都知道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 724LVS可称为Linux虚拟服 ... -
CYGWIN SSH Server 配置
2011-03-23 10:16 6331. 从[url]www.cywin.com[ ... -
ubuntu10 iso方式安装
2011-03-28 11:31 820一、下载Ubuntu硬盘安装光盘ISO镜像包 下载地址 ... -
ubuntu分区
2011-03-28 14:03 785/boot 分区,256M,文件系 ... -
Ubuntu 小企鹅输入法fcitx安装及设置
2011-03-28 14:08 1089ubuntu用了有一段时间 ... -
linux常用命令
2011-03-28 14:25 7591.关于文件/目录 ... -
ubuntu 安装 opera
2011-03-28 14:27 8761.sudo gedit /etc/apt/sources.l ... -
ubuntu下设置tomcat成为启动服务
2011-03-29 14:18 8171.将tomcat6下的catalina.sh拷贝到/etc/ ... -
linux启动项
2011-03-29 14:37 682、相关基础知识点 1)re ... -
ubuntu10启动window
2011-03-31 11:38 788命令行进入/boot/grub目录,gedit打开grub.c ... -
LINUX目录详解
2011-03-31 13:17 597/ 根目录 │ ├boot/ Li ... -
ubuntu启动图形界面
2011-04-10 13:45 1187/etc/X11/default-display-man ... -
linux出现 DISPLAY 尚未设置 解决方法
2011-04-11 09:05 2411现在root用户目录下执行#xhost +然后#su - or ... -
Linux编辑器vi使用方法详细介绍
2011-05-12 13:18 777vi编辑器是所有Unix及 ... -
ubuntu10.04下低画质进不了图形化解决
2011-06-14 16:46 821Xorg -configure重新配置xserver vi ... -
Rsync简介
2011-07-15 13:10 730目录: 问题 替代品 R ... -
linux关机命令
2011-07-20 21:11 749数据同步写入磁盘: sync 在 Linux 系统中,为了加 ... -
suid,sgid,sticky bit简介
2011-07-21 11:20 803三种特殊权限简介SUID当一个设置了SUID 位的可执行文件被 ...
相关推荐
例如,可以通过调整MaxKeepAliveRequests、KeepAliveTimeout等参数来优化连接管理。 8. **模块管理**:Apache支持丰富的模块扩展,如mod_rewrite用于URL重写,mod_php用于处理PHP脚本。你可以根据需要加载或禁用...
4. 测试不同负载下服务器的性能,比较启用和禁用keepalive的情况。 通过这些测试,我们可以评估和优化Spring Boot应用的网络性能,确保在处理大量并发请求时,服务器能有效地利用HTTP长连接,减少延迟并提高吞吐量...
安装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-...
MySQL的主主复制结合Keepalive工具的使用详解 在分布式数据库系统中,数据的高可用性和一致性至关重要。MySQL的主主复制是一种常见的解决方案,它允许两个或多个服务器之间同步数据,确保任何一处的数据更改都会被...
标题中的"rabbitmq-keepalive-haproxy.tgz"表明这是一个关于RabbitMQ高可用集群配置的压缩包,其中结合了Haproxy和Keepalived两个组件。这个集群方案通常用于构建一个稳定且容错性强的分布式消息中间件环境。 ...
标题 "keepalive rpm.rar" 暗示了这个压缩包包含的是 CentOS 系统下用于安装 keepalived 服务的 RPM 包。keepalived 是一个开源项目,它主要用于实现 Linux 系统上的高可用性(High Availability, HA)解决方案,...
标题中的"keepalive--aarch64.rar"表明这是一个针对aarch64架构的软件或程序,使用了“keepalive”技术,并且被压缩在RAR文件格式中。RAR是一种流行的压缩格式,通常用于存储和传输大量数据,因为它可以提供较高的...
3. **BGP会话建立**:BGP会话的建立过程涉及TCP三次握手,打开和确认报文的交换,以及BGP OPEN、KEEPALIVE和UPDATE消息的交互。 4. **路由选择**:BGP使用一套复杂的策略来选择最佳路径,包括路径长度、本地优先级...
标题中的“Mysql keepalive-1.4.5.tar.gz”指的是该软件的1.4.5版本的压缩包文件,通常以`.tar.gz`格式提供,这是一种在Linux和Unix环境中常见的归档和压缩方式。 描述中提到,这个包适用于MySQL 5.6及更高版本,这...
---05Lucene的API介绍-复杂查询.mp4┃---06ElasticSearch简介.mp4┃---07ES和Solr的对比.mp4┃---08CentOS7的安装.mp4┃---09CentOS7的特殊命令.mp4┃---10keepalived说明.mp4┃---11虚拟keepalive
keepalive_timeout 65; server { listen 443 ssl; server_name ttt.com; ssl on; ssl_certificate /data/sslKey/server-cert.cer; # 服务端证书公钥 ssl_certificate_key /data/sslKey/server-key.key; # ...
-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, --...
13. `-k`:启用HTTP KeepAlive特性,保持TCP连接的持久性,更接近实际网络环境。 14. `-d`、`-S`、`-g` 和 `-e` 参数提供了对测试结果展示的定制,例如是否显示百分比服务表、置信区间估计和警告信息。 Apache...
1. 如何加大tomcat连接数 在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有: minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessors:最大连接线程数...
* KeepAliveTimeout:保持连接状态时的超时时间 * Include:需要包含进来的其他配置文件 五、Apache 的区域配置项参数 Apache 的区域配置项参数有很多,以下是一些常用的区域配置项参数: * <Directory />:控制...
为了解决这个问题,"keepalive.zip"这个压缩包提供了一个名为"keepalive.jar"的插件,其功能就是定时向数据库发送查询请求,以保持连接的活跃,防止因长时间无交互而自动断开。 "keepalive"机制在网络通信中是一种...
本文主要介绍mescroll.js+keepAlive+meta属性记住滚动位置,比keepAlive 1.0版本代码更简洁
- 支持三种主要的负载均衡技术:VS/NAT、VS/TUN 和 VS/DR。 - **负载均衡技术详解**: - **VS/NAT (Virtual Server via Network Address Translation)**: - 通过网络地址转换技术实现负载均衡。 - 调度器重写...
1.DHCP R19---有个ACL,可以直接删掉 R17---e0/1口没有做authentication R18---e0/1口没有做authentication ======================... R22和R23的keepalive mode 一个是双向 一个是被动 将R23的mode改为 bidirectional
keepalive--aarch64