测试中碰到的问题:下载不成功
50个线程,35个线程不间断上传返回的文件名放在内存的列表中,15线程随机从内存的列表获取文件名不间断下载,运行一段时候后monitor会发现有些下载不成功,查看日志报错如下:
[2009-08-25 18:01:45] ERROR - file: storage_service.c, line: 2009, call stat fail, file: /home/fastdfs/storage/data/00/00/fmSpwEqSzNoAAAAAAAAUAEKVbmk38.txt, error no: 2, error info: No such file or directory
请问这个问题是什么原因造成的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
storage server不止1台吧?
貌似文件还没有同步过来,你就去下载文件了。
正确的做法,每次下载文件前,都去询问tracker server,获得可供下载的storage server,然后再到该storage server下载文件。
但是按照上次msn上和你交流的情况:上传文件后如果立即下载,是在tracker一端根据时间戳来判断的,如果要下载文件的时间比storage的最近时间戳要新,则从源上下载.所以按照我的理解如果上传文件后,虽然没有同步过来,但还是会从源上下载,所以不存在下载不成功的现象出现,除非我理解有误.望斑竹解释.
的确是这样的。
下载文件过程,你是先查询tracker,获得可供下载的storage server,然后从该storage server下载文件的吗?
是的,就是这样做的.下载的文件名从上传的文件列表中随机获取.results[0], results[1],是随机获取的,代码如下:
TrackerClient trackerClient = new TrackerClient();
Socket trackerSocket = trackerClient.getConnection();
StorageServer storageServer = null;
StorageClient storageClient = new StorageClient(trackerSocket,storageServer);
NameValuePair[] metaList=null;
String[] results;
int errno;
storageClient.download_file(results[0], results[1]);
我用java写了个测试脚本,模拟LZ的测试情况,没有发现任何问题!
测试脚本参见附件。
运行测试脚本示例:
java -cp build/fastdfs_client.jar org.csource.fastdfs.TestLoad fdfs_client.conf
斑竹有msn ?,请加一下我,谢谢 reading_cool@msn.com