我有一个带有32,000个s3对象的s3存储桶。我想分批阅读这些s3对象(比如说50)。我将最大连接数设置为1000(但是我们有12,000,通常一次一次只能读取很少的一次打开多个连接通常不是一个好习惯)我有多线程的Java代码,该代码读取从这些s3对象中,每个s3对象都分配给一个线程。这是问题所在 1.我想批量读取s3个对象,一次说50个,但是由于我们只从存储桶中读取50个对象,并将S3ObjectInputStream分配给一个线程,因此所有其他输入流一直在等待连接重置错误开始从s3对象读取
java.net.SocketException:连接重置
解决此类问题的最佳方法是什么。
我已将最大连接数增加到1000,尽管我有12k,但我该如何自动化,所以我不必在最后将s3存储桶拆分为1000个对象。
答案 0 :(得分:2)
我怀疑问题是您正在尝试使用S3 Batch执行它不支持的操作。 documentation说:
要创建作业,请为Amazon S3批处理操作提供对象列表,并指定要在这些对象上执行的操作。 Amazon S3批处理操作支持以下操作:
PUT复制对象
PUT对象标记
PUT对象ACL
启动冰川还原
调用AWS Lambda函数
对象GET不在该列表中。
(但是,如果您向我们展示了minimal reproducible example,我们可以理解您的实际行为!)