1 背景:分析epoll系统调用
2 工具:
使用strace分析 zk 客户端连接时,server发生的系统调用
bin/zkCli.sh -server 172.16.208.137:2181 和zkserver连接以后
3 监控分析过程:
3.1 连接事件如下
3.2 对于epoll_data疑惑:
3.3 op类型
3.4 events:(边缘处罚和水平出发,默认是level Triggerd)
3.5 查看man手册第七部分 man 7 epoll
注意:默认使用EPOLLLT,边缘触发存在的问题,pipe reader 可能读取不完整,接收端没有收到完整的数据在第5步wait,但是服务端也在等待回应,导致双方都hang主。
解决方案: nio + read/write return EAGAIN
3.7 zk_clinent 每隔10秒发一次心跳
3.8 心跳事件如下
3.9 断开连接
4 小结:
1 分析工具 strace man手册
2 epoll 参数
3 边缘,水平触发的区别,以及存在的问题和解决方案