关于fastdfs网络心跳的问题

发布于 2022-09-18 18:06:29 字数 412 浏览 14 评论 0

今天下午测了下FastDFS的网络相关的功能,关于Storage 宕机时,两个情况要请教下happy_fish
1、kill -9的时候monitor反应非常快(不到1秒),状态变成offline
2、直接拔网线则貌似没有反应,等待了接近1分钟都不见状态的改变, 仍然是active

在tracker的代码里面找不到定期检查上次心跳时间的代码,kill -9 应该是没有处理任何后续消息的,为什么monitor能反应那么快呢?
心跳信息应该是处理网络异常的情况吧,直接拔网线为什么不见状态的改变呢?

最近在学习FastDFS源码,希望happy_fish能回复上面的问题,顺便指出源码中该问题的解决位置,感激不尽!

[ 本帖最后由 congsh777 于 2009-4-27 22:51 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤者何惧 2022-09-25 18:06:29

配置文件tracker.conf中的网络超时默认值是60秒,你采用的是默认配置吧。形如:
network_timeout=60

心跳是storage server主动向tracker server发送的,默认时间间隔是30秒。形如:
heart_beat_interval=30

kill掉storage服务进程时,网络连接会断开,此时tracker server在recv时会立即返回0。
拔掉网线时,服务器端应该无法自动感知到的,只能靠recv超时来判断。

tracker server相应的处理代码参见:
文件:tracker_service.c
函数:void* tracker_thread_entrance(void* arg)
代码行:result = tcprecvdata_ex(client_info.sock, &header, \
                        sizeof(header), g_network_timeout, &recv_bytes);
                if (result == ETIMEDOUT && count > 0)
                {
                        continue;
                }
                ...

目前tracker server的处理机制是允许超时的,recv超时仍然会保持连接(继续recv)。

夜未央樱花落 2022-09-25 18:06:29

呵呵~~~不错不错~~~顶一个~~~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文