关于fastdfs网络心跳的问题
今天下午测了下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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
配置文件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)。
呵呵~~~不错不错~~~顶一个~~~