aws版本是2.21.40
部署到tomcat9上運行一段時間就會卡死,client 無法創建,可能是pool滿了,加入
報錯如下:the client has "experienced" too many recent call failures
1.請求太多,並發量太大
2.s3client用的apache client加入配置如下
ClientOverrideConfiguration clientOverrideConfiguration =
ClientOverrideConfiguration.builder()
.retryPolicy(RetryPolicy.builder().numRetries(0).build())
.build();
3.最重要的是加入配置maxConnections(300),另外更改查詢文件是否存在
HeadObjectRequest req = HeadObjectRequest.builder()
.bucket(Constants.awsPath.bucketName)
.key(keyName)
.build();
try {
return s3Client.headObject(req);
} catch (NoSuchKeyException e) {
return null;
}
4.预签名设置加入
s3Presigner = DefaultS3Presigner
.builder().s3Client(s3Client)
應該是設置url存活時間太長了,導致服務端在頻繁請求時不再分配Token,導致client無法請求,最後設置預簽名b.signatureDuration(Duration.ofMinutes(1));
目前觀察中