aws s3 上传、下载出现连接超时

由于使用aws s3上传、下载文件未关闭IO流,引发的血案
上传文件出现异常:

Unable to execute HTTP request: Timeout waiting for connection from pool
com.amazonaws.SdkClientException: Unable to execute HTTP request: Timeout waiting for connection from pool
        at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1207)
        at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1153)
        at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802)
        at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)
        at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)
        at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)
        at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)
        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5062)
        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5008)
        at com.amazonaws.services.s3.AmazonS3Client.access$300(AmazonS3Client.java:394)
        at com.amazonaws.services.s3.AmazonS3Client$PutObjectStrategy.invokeServiceCall(AmazonS3Client.java:5950)
        at com.amazonaws.services.s3.AmazonS3Client.uploadObject(AmazonS3Client.java:1812)
        at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1772)
        at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1710)
        at jrx.anyservice.user.service.service.impl.UserImageInfoServiceImpl.uploadImg(UserImageInfoServiceImpl.java:295)
        at jrx.anyservice.user.service.service.impl.UserImageInfoServiceImpl$$FastClassBySpringCGLIB$$2a48557.invoke()
        at org.springframework.cglib.proxy

当时以为是网络不好,然后设置更长的超时时间,但是还是没有用
查看服务器出现大量的close_wait状态的TCP连接,而且不会自动断开,一直占用着资源。查看代码原来是上传、下载的时候没有关闭IO流。

检查下网络,是不是用了代理服务器?

参考GPT和自己的思路:

你的问题是因为未关闭IO流导致连接超时和服务器资源占用。关闭IO流是一个常见的解决方案,可以释放资源并正确地终止上传或下载过程。建议在上传/下载完成后立即关闭IO流。此外,您可能还需要适当地配置连接池的大小和超时时间,以便在高负载时获得更好的性能。您可以尝试增加连接池大小和将连接超时时间设置为适当的值。另外,您可以考虑使用AWS SDK的异步调用API以提高性能和效率。