Передача S3 в EC2 слишком медленная - PullRequest
5 голосов
/ 03 июля 2019

Я пытаюсь переместить большой файл (~ 1,75 ГБ) из экземпляра S3 в EC2 в том же регионе.

Через командную строку AWS я могу сделать это за ~ 13 секунд.

aws s3 cp s3://mybucket/myfile.txt ~

wget из того же экземпляра EC2 (если я сделаю файл общедоступным) сделает это за 34 секунды.

wget https://mybucket.s3.amazonaws.com/myfile.txt

Мое приложение через REST API может загружать его с той же скоростью, что и wget.

Экземпляр m5a.2xlarge, который должен иметь сеть «до 10 Гбит / с». Если моя математика верна, скорость 10 Гбит / с должна составлять около 1 гигабайта в секунду, поэтому для получения файла требуется менее 2 секунд?

UPD: speedtest-cli показывает 850 Мбит / с.

Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by BroadAspect (Ashburn, VA) [0.98 km]: 1.387 ms
Testing download speed................................................................................
Download: 850.94 Mbit/s
Testing upload speed......................................................................................................
Upload: 929.41 Mbit/s

UPD2: Расширенная сеть включена

[ec2-user@ip-172-30-0-196 ~]$ ethtool -i eth0
driver: ena
version: 2.0.2g

UPD3: Попробовал еще пару типов экземпляров. Самый маленький / самый дешевый ARM a1.medium и i3en.6xlarge (оптимизирован для ввода / вывода, «гарантировано» 25 Гбит / с)

Время для копирования файла 1,75 ГБ из экземпляра S3 в EC2 в том же регионе:

|instance type|Network Gbps|aws s3 cp|wget|
|-------------|------------|---------|----|
|m5a.2xlarge  |  Up to 10  |   13    | 34 |
|a1.medium    |  Up to 10  |   26    | 34 |
|i3en.6xlarge |     25     |   7.5   | 18 |

Что интересно - переключение на IO - оптимизированный экземпляр улучшает скорость передачи, но он все еще не близок к [размеру файла] / [экземпляру в Гбит / с].

UPD4: Конфигурация AWS S3

AWS S3 CLI предлагает несколько вариантов конфигурации , таких как:

aws configure set default.s3.max_concurrent_requests 10
aws configure set default.s3.multipart_chunksize 8MB

Числа выше являются значениями по умолчанию. Немного поиграв с ними, лучшая комбинация, которую я нашел для m5a.2xlarge, - это 3 одновременных запроса, размер чанка 180 МБ. Это сокращает время загрузки до 9 секунд или ~ 204 МБ / с. Лучше, но все же довольно далеко от (теоретического?) Максимума.

1 Ответ

1 голос
/ 03 июля 2019

Наличие 10 Гбит / с не гарантирует, что другой конец отправляет вам данные с такой скоростью.

До типов экземпляров текущего поколения EC2, настроенных с ENA , которые поддерживают до 25 Гбит / с для S3, максимум составлял 5 Гбит / с.

Вы можете выполнить несколько дополнительных тестов, например, от EC2 до EC2 или от EC2 до speedtest.net (или эквивалент).

Кстати, если вы действительно загружаете текстовый файл объемом 1,75 ГБ, тогда сжатие поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...