我曾经是一个快乐的s3cmd用户.但是最近当我尝试将一个大型zip文件(~7Gig)传输到Amazon S3时,我收到此错误:
$> s3cmd put thefile.tgz s3://thebucket/thefile.tgz
....
20480 of 7563176329 0% in 1s 14.97 kB/s failed
WARNING: Upload failed: /thefile.tgz ([Errno 32] Broken pipe)
WARNING: Retrying on lower speed (throttle=1.25)
WARNING: Waiting 15 sec...
thefile.tgz -> s3://thebucket/thefile.tgz [1 of 1]
8192 of 7563176329 0% in 1s 5.57 kB/s failed
ERROR: Upload of 'thefile.tgz' failed too many times. Skipping that file.
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我该如何解决?如果它无法解决,我可以使用哪种替代工具?
我最近重构了一些代码,使用"加载数据"将行填充到数据库中,并且效果很好 - 但是对于每个记录,我必须将2个文件上传到s3 - 这完全破坏了我获得的华丽速度升级.虽然我能够处理600多个这些文件/秒,但由于s3,它们现在以1 /秒的速度流入.
你有什么办法解决这个问题?看看API,我发现它主要是RESTful所以我不知道该怎么做 - 也许我应该把所有这些都放在数据库中.文本文件通常不超过1.5k.(我们填充的另一个文件是文本的xml表示)
我已经将这些文件缓存在我的Web服务器的HTTP请求中,因为它们被大量使用.
顺便说一句:我们当前的实现使用java; 我还没有尝试过线程,但这可能是一个选择
建议?