[英]Amazon S3 Upload NoHttpResponseException
我有用於將文件上傳到Amazon S3的下一個代碼:
AmazonS3Client client = new AmazonS3Client(credentials,
new ClientConfiguration().withMaxConnections(100)
.withConnectionTimeout(120 * 1000)
.withMaxErrorRetry(15));
TransferManager tm = new TransferManager(client);
TransferManagerConfiguration configuration = new TransferManagerConfiguration();
configuration.setMultipartUploadThreshold(MULTIPART_THRESHOLD);
tm.setConfiguration(configuration);
Upload upload = tm.upload(bucket, key, file);
try {
upload.waitForCompletion();
} catch(InterruptedException ex) {
logger.error(ex.getMessage());
} finally {
tm.shutdownNow(false);
}
它可以工作,但是某些上載(1GB)會產生下一條日志消息:
INFO AmazonHttpClient:Unable to execute HTTP request: bucket-name.s3.amazonaws.com failed to respond
org.apache.http.NoHttpResponseException: bucket-name.s3.amazonaws.com failed to respond
我嘗試創建沒有AmazonS3Client的TransferManager,但這無濟於事。
有什么辦法可以解決?
日志消息告訴您,向S3發送數據時出現暫時錯誤。 您已經配置了.withMaxErrorRetry(15)
,因此AmazonS3Client透明地重試失敗的請求,並且整個上傳成功。
這里不一定有要修復的內容-有時數據包會在網絡上丟失,尤其是當您嘗試一次推送大量數據包時。 等待一會再重試通常是解決此問題的正確方法,而這已經在發生。
如果需要,您可以嘗試降低MaxConnections
設置以限制一次上傳多少文件塊-可能會有一個不錯的地方,即您仍然可以獲取合理的吞吐量,但不會使網絡過載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.