localstack AWS S3 连接被拒绝,没有错误

问题描述 投票:0回答:1

我正在运行 localstack 3.0.2 来测试 Spring Boot 应用程序,使用 aws-java-sdk 作为使用 TestContainers 的集成测试。我需要模拟查询大量 S3 对象,因此我使用代码需要导航和高性能的结构化路径生成大量对象(作为基本文本文件)。当我生成大约 100 万个对象时,我的 Junit 测试将抛出:

com.amazonaws.SdkClientException:无法执行 HTTP 请求:连接到 127.0.0.1:32822 [/127.0.0.1] 失败:连接被拒绝

at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1219)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1165)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:814)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:781)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:755)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:715)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:697)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:561)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:541)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5520)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5467)
at com.amazonaws.services.s3.AmazonS3Client.access$300(AmazonS3Client.java:422)
at com.amazonaws.services.s3.AmazonS3Client$PutObjectStrategy.invokeServiceCall(AmazonS3Client.java:6601)
at com.amazonaws.services.s3.AmazonS3Client.uploadObject(AmazonS3Client.java:1891)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1851)

docker 日志没有显示容器中的任何错误。

没有一致的具体数量的物体会像这样爆炸。我可以相当一致地运行最多大约 950,000 个对象的相同测试,但我希望针对我想要执行的不同版本的测试运行 2-1500 万个对象。我知道这可能不适合 TestContainer,但在放弃自己寻找新方法来测试我想要测试的内容之前,我想了解此问题的原因以及我的补救措施可能是什么。

java amazon-s3 junit testcontainers localstack
1个回答
0
投票

LocalStack 将 S3 对象存储在内存中,它们不会超过一定的大小阈值(512kb),之后它们将存储在磁盘上的临时文件中。看起来您的容器可能会耗尽内存并被杀死,这会导致

Connection refused
错误。

也许您可以尝试提高容器的可用内存,看看是否可以上传更多数据?

© www.soinside.com 2019 - 2024. All rights reserved.