有时连接不上tracker导致上传文件失败
最新版v1.20,两个tracker部署在3.26和3.167两台机器,问题一致。
启动一段时间后提示连接、send和recv失败,导致上传文件有时失败。
条件是tracker的group分发策略配置为2:
# the method of selecting group to upload files
# 0: round robin
# 1: specify group
# 2: load balance, select the max free space group to upload file
store_lookup=2
配置为0或1时不出现。
tracker启动信息如下,时间间隔普遍设置比默认的短些:
[2009-09-15 16:24:53] INFO - FastDFS v1.20, base_path=/home/gluster/fastdfs, network_timeout=10s, port=22122, bind_addr=192.168.3.167, max_connections=256, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4096MB, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=30s
日志或提示如下:
tracker errlog:
[2009-09-15 15:28:48] ERROR - file: tracker_service.c, line: 100, client ip: 192.168.3.26, send data fail, errno: 32, error info: Broken pipe
[2009-09-15 15:28:53] WARNING - file: tracker_service.c, line: 1964, client ip: 192.168.3.167, recv data fail, errno: 107, error info: Transport endpoint is not connected
storage errlog:
[2009-09-15 15:31:07] INFO - file: tracker_client_thread.c, line: 191, successfully connect to tracker server 192.168.3.26:22122
[2009-09-15 15:31:17] ERROR - file: tracker_client_thread.c, line: 717, tracker server 192.168.3.26:22122, recv data fail, errno: 110, error info: Connection timed out.
[2009-09-15 15:31:18] INFO - file: tracker_client_thread.c, line: 191, successfully connect to tracker server 192.168.3.26:22122
fdfs_test上传文件有时失败,提示:
[2009-09-15 15:23:41] ERROR - connect to 192.168.3.167:22122 fail, errno: 111, error info: Connection refused
tracker_query_storage fail, error no: 2, error info: No such file or directory
另外值得高兴的是v1.20的文件同步功能OK,文件状态更新准确,即使手工破坏掉一个storage的数据,清理该storage data/下的:
.data_init_flag
storage_stat.dat
data/sync/*
然后重启文件又能从本group的其他storage再次同步过来,yuqing太帅了!
[ 本帖最后由 happy_fastdfs 于 2009-9-15 16:33 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
看你的日志信息,tracker server 192.168.3.167的服务进程貌似没有启动,或者出现异常?
确认两个tracker和2group*4个storage都在运行,很容易重现的,主要配置tracker:
# the method of selecting group to upload files
# 0: round robin
# 1: specify group
# 2: load balance, select the max free space group to upload file
store_lookup=2
有时tracker的log不提示出错,但storage都会不停写出:
[2009-09-16 12:25:50] ERROR - file: tracker_client_thread.c, line: 717, tracker server 192.168.3.26:22122, recv data fail, errno: 110, error info: Connection timed out.
[2009-09-16 12:25:51] INFO - file: tracker_client_thread.c, line: 191, successfully connect to tracker server 192.168.3.26:22122
[2009-09-16 12:25:56] ERROR - file: tracker_client_thread.c, line: 717, tracker server 192.168.3.167:22122, recv data fail, errno: 110, error info: Connection timed out.
[2009-09-16 12:25:57] INFO - file: tracker_client_thread.c, line: 191, successfully connect to tracker server 192.168.3.167:22122
而这两个tracker都在运行中。
是在压力测试情况下才出现这个现象么?
不需要压力,我只是这样启动tracker后,客户端随便传些文件和用monitor发几次请求,过会就能看到tracker和storage的日志里面不停的慢慢打出上述日志,从代码看是storage跟tracker交互时(如join请求)触发的,errlog的频度根据心跳或上报间隔。
不过这个问题,可以通过不设置tracker的group分发策略为load balance而规避。
这个问题我定位一下。
V1.20 tracker server增加了alive检测,tracker server在指定时间内没有收到数据包,会主动断开连接。tracker server上配置的alive检测时间一定要比storag server的心跳间隔时间要长,通常是storage心跳间隔时间的2~3倍。
请LZ检查一下配置文件。
是否跟我使用的是64位机器有关?我调整了时间间隔还是一样的,tracker server上配置的alive检测时间(20秒)一定要比storag server的心跳间隔时间(10秒)要长,通常是storage心跳间隔时间的2~3倍。
编译时有几个warning,你看看有没隐患,我测试得跑得还算正常,看这几个警告指的都是sock int与指针转换的,反正sock值很小,转换不会乱:
tracker_service.c:1870: warning: cast from pointer to integer of different size
fdfs_trackerd.c:195: warning: cast to pointer from integer of different size
storage_service.c:2998: warning: cast from pointer to integer of different size
fdfs_storaged.c:222: warning: cast to pointer from integer of different size
费了半天没找出原因算了不查了,配置时回避一下好了。
[ 本帖最后由 happy_fastdfs 于 2009-9-17 11:42 编辑 ]
这个类型转换是没有任何问题的。
如果有问题,测试程序根本就跑不通的。