簡體   English   中英

Amazon S3上傳NoHttpResponseException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM