免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3113 | 回复: 2
打印 上一主题 下一主题

[FastDFS] 关于fastdfs网络心跳的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-27 18:47 |只看该作者 |倒序浏览
今天下午测了下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 编辑 ]

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
2 [报告]
发表于 2009-04-28 10:14 |只看该作者

回复 #1 congsh777 的帖子

配置文件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)。

论坛徽章:
0
3 [报告]
发表于 2009-06-16 10:13 |只看该作者
呵呵~~~不错不错~~~顶一个~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP