应用层心跳机制

疑问

  • 应用层心跳机制是否有必要?

解答

  • 对了这个问题,很早看别人的博客介绍是必须的,但是对于解释似懂非懂,当别人问我时也是解释不清楚,直到有一天我解决了一个问题。

问题描述

  • 写测试程序时,实现了一个TCP客户端去连接服务器,客户端连接和发送数据都是成功的,没有返回任何错误,但是服务器端却没有接收到任何事件,甚至accept也没任何反应。

问题分析

  • 最后问题定位于:服务器在某个处理阻塞了,循环阻塞住了,accpet函数没有执行到,但是客户端却连接成功了。
  • socket连接以及其它流程,内核层实际包揽了所有的工作,只是在需要的时候将状态反馈给应用层,如果应用层忽略了或没及时处理这些上报,内核也不知道,导致内核层和应用层socket状态是不一致。
  • 应用层并不是socket事件的真正执行者,出问题时非常可能出现和内核状态不一致,这是需要加 应用层心跳机制的原因,socket自己的心跳机制,内核层包揽了所有工作,当应用层出问题了,例如:阻塞了,心跳机制可能检测不到问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值