连接心跳问题

今天看以前经理写的项目时,发现了又 ’连接心跳 ‘  这个东西(我是菜鸟)。在网上查了查,但还不是很懂(求高手赐教,以后慢慢研究)。下边是查到自己感觉有用的东西:


1、  心跳的作用就是检测链路是否连接,就这点功能,没其他作用了。

  不建议使用定时器(个人理解的定时器,离不开alarm,信号。),信号不容易控制,就算是单线程也容易引起race condition,何况多线程。
可以使用当前时间除以一个间隔值,满足了即可发送心跳报文。
或者keepalive,默认2小时,可以修改内核参数缩小心跳时间。

  心跳有益处,也有好处。益处在于能检测到网络问题,害处在于如果出现短暂性的网络波动(短暂性的,网络出现暂时性的断开,若干s后可能又好了),他可能就立马就把一个优秀的链路给断开了。

2、能不能改变一下思路。不必测试连接。我现在这么干:
连接池,平时连接是断的。使用时连,长时间(300秒)不用,断。
使用中故障,归还,断。取用时重连(自愈测试)。。。。

完全无需健康检查(心跳,算是连接池健康检查的一种)的自愈式连接池,使用效果非常好,极为可靠。
单有一个监控线程每30秒检查一次连接池,发现哪个连接长时间未用就关闭之(如果不关闭就无法保证长时间闲置后,它到底好不好。我也不测它好不好了,关了算了,用时再开)。

你的思路是“保通”,这太难了。
我的思路是“保断”,这个容易。

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4096268

http://blog.csdn.net/iamdesmo/article/details/7439193

以后自己在慢慢研究  看来 我真的暂时还高不了这么高端的。

原文地址:https://www.cnblogs.com/gogood/p/3728396.html