FastDFS生成文件名问题
可以问一下这个文件名的生成方式吗?
是根据原文件名hash得出的?
重复的几率大不大?如果生成的文件名重复了是否就存储失败呢?
还有就是在大批量操作小文件时经常出现如下异常:
似乎是socket没有及时释放?有人遇到过这个问题吗?
java.net.SocketException: No buffer space available (maximum connections reached?): connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at org.csource.fastdfs.ClientGlobal.getSocket(ClientGlobal.java:107)
at org.csource.fastdfs.StorageServer.<init>(StorageServer.java:33)
at org.csource.fastdfs.TrackerClient.getUpdateStorage(TrackerClient.java:352)
at org.csource.fastdfs.StorageClient.newUpdatableStorageConnection(StorageClient.java:1059)
at org.csource.fastdfs.StorageClient.delete_file(StorageClient.java:55
at org.csource.fastdfs.StorageClient1.delete_file1(StorageClient1.java:295)
我用的是java客户端;
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
包括源storage server ip地址?那我机器迁个机房怎么办?
IP八成是要变啊。。。
请教版主,是怎么将创建时间戳、文件大小、源storage server ip地址……信息包含到文件名中的。怎么一个过程。
本帖最后由 payend 于 2012-12-05 12:32 编辑
这个和jvm没有什么关系。
主要还是因为客户端端口被占用满了,无法获取到新的端口。在最新的fastdfs_client_v1.24.jar依然可以出现这个问题。
调整time_wait回收时间也许可以解决这个问题。
TCP 192.168.1.100:65508 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65510 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65513 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65515 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65518 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65519 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65521 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65523 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65525 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65529 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65530 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65531 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65533 192.168.1.150:23000 TIME_WAIT 0
TCP 192.168.1.100:65535 192.168.1.150:23000 TIME_WAIT 0
本帖最后由 zx4866123 于 2012-09-12 09:46 编辑
回复 2# happy_fish100
膜拜!
回复 2# happy_fish100
谢谢回复。
异常确实是压力测试的时候出现的。
本帖最后由 happy_fish100 于 2011-01-26 12:39 编辑
回复 1# pealdoy
生成的文件名中,包含了创建时间戳、文件大小、源storage server ip地址、文件内容crc32检验码,当文件小于2GB时,还会包含一个随机数。
代码中会循环10次,判断新生成的文件名是否已存在。
所以,当文件小于2GB时,文件重名的概率,非常非常低,重名的问题已经完全避免掉了。
出现这个异常情况,是在压力测试的情况下么?
如果是在压力测试的情况,那可以忽略。这个和java的垃圾回收(包括资源回收)机制有关。