Невозможно загрузить файлы размером более 8 ГБ в Amazon S3 путем многоэтапной загрузки API Java из-за разрыва канала - PullRequest
2 голосов
/ 15 марта 2011

Я реализовал многоэтапную загрузку S3 в Java, как высокого, так и низкого уровня, на основе примера кода из http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?HLuploadFileJava.html и http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?llJavaUploadFile.html

Когда я загружал файлы размером менее 4 ГБ, загрузка происходила без проблем. Когда я загрузил файл размером 13 ГБ, код начал показывать исключение ввода-вывода, сломанные каналы. После нескольких попыток он все еще не удался.

Вот способ повторить сценарий. Возьми релиз 1.1.7.1,

  1. создать новую корзину в стандартном регионе США
  2. создать большой экземпляр EC2 в качестве клиента для загрузки файла
  3. создать файл размером 13 ГБ в экземпляре EC2.
  4. запустить образец кода на одной из страниц документации API S3 высокого или низкого уровня из экземпляра EC2
  5. проверить один из трех размеров: размер по умолчанию (5 МБ) или установить размер детали в 100 000 000 или 200 000 000 байт.

Пока что проблема проявляется последовательно. Я сделал tcpdump. Оказалось, что HTTP-сервер (сторона S3) продолжал сбрасывать поток TCP, что приводило к тому, что клиентская сторона генерировала исключение ввода-вывода - прерванный канал после того, как число загруженных байтов превысило 8 ГБ. Кто-нибудь сталкивался с подобным опытом при загрузке больших файлов в S3 с помощью многоэтапной загрузки?

...