测试中发现的问题:心跳检测
2台tracker,2台storage,2台storage在1个卷.
将其中一台storage断电后,然后monitor发现该storage的状态还是active.本来以为过一段时间状态
会变为offline,但是等了一个半小时状态还是active.如果kill掉进程,状态很快就会变化.
tracker在一段时间内接收不到storage的心跳时,应该会自动将该storage的状态变为
offline,难道目前fastdfs还没有实现这种机制吗,或者有什么地方可以设置的吗,请指教!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
storage server会定期向tracker server发送心跳包。
storage server的状态从active转换为offline,tracker server是看其对应的socket是否断掉。
storage server突然断电的情况还真没有测试过,可以考虑tracker server没有收到storage server的心跳的情况下,将其自动下线。
我的tracker server的timeout时间为60秒.按照正常情况60秒后,所有的socket应该都断掉,没有理由等一个小时还没有反应.
建议斑竹在tracker一端加上定时功能,如果,一段时间内tracker一端收不到storage的心跳包,则视为offline.
期待中!!!!!!
多谢happy_fish,我也重现了这个问题,storage状态变了tracker不能准备感知:
1,启动一个group的第二个storage后进入文件同步显示SYNCING,然后ls查看文件同步已经完成,几分钟后还是SYNCING状态,没有更新状态到ACTIVE,测试文件不会上传到这个storage;
2,手工stop这个storage,结果10分钟了继续保持SYNCING状态,未显示OFFLINE状态。
3,其中storage_servers.dat 内的状态跟monitor显示的不同,即使重启tracker也不会更新成一致。
呵呵,最近发现FastDFS的机制的确非常符合存储大量小文件做并发访问,所以做了些测试,发现还存在一些问题,热切期盼新版本解决。
[ 本帖最后由 happy_fastdfs 于 2009-8-27 15:59 编辑 ]
V1.20版本中tracker已经增加了对storage server的active检查,欢迎大家下载使用。
非常感谢zhouzezhong的反馈!
从V1.20版本开始tracker支持alive检测,alive检测时间间隔一定要大于storage的心跳时间间隔,是心跳时间间隔的2~3倍即可。
即将推出的V1.21版本中,通过socket的KEEP ALIVE机制,可以检测到网络异常断掉的情况。通过以上两种方式,解决了网络异常中断的情况下,tracker server不能感知的问题。
非常感谢zhouzezhong和happy_fastdfs,感谢你们对FastDFS进行了各种各样的测试和反馈!
看了下代码,keepalive选项是不是应该应用到accept返回的socket, 而不是监听socket?
我测试过,对于KEEP ALIVE选项,设置监听的socket后,会对accept得到的socket起作用。