【事件通知机制epoll】 epoll - I/O event notification facility 水平触发以及边缘触发存在的问题?

22 篇文章 0 订阅

1 背景:分析epoll系统调用

2 工具:

使用strace分析 zk 客户端连接时,server发生的系统调用

bin/zkCli.sh -server 172.16.208.137:2181 和zkserver连接以后

3  监控分析过程:

3.1 连接事件如下

0

0

0

 3.2 对于epoll_data疑惑:

0

3.3 op类型

0

3.4 events:(边缘处罚和水平出发,默认是level Triggerd)

0

 3.5 查看man手册第七部分 man 7 epoll

0

 注意:默认使用EPOLLLT,边缘触发存在的问题,pipe reader 可能读取不完整,接收端没有收到完整的数据在第5步wait,但是服务端也在等待回应,导致双方都hang主。

           解决方案: nio + read/write return EAGAIN

3.7 zk_clinent 每隔10秒发一次心跳

3.8  心跳事件如下

0

3.9  断开连接

0

 

4 小结:

  1 分析工具 strace man手册

  2 epoll 参数

  3 边缘,水平触发的区别,以及存在的问题和解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自驱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值