Я пытаюсь переместить большой файл (~ 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 МБ / с. Лучше, но все же довольно далеко от (теоретического?) Максимума.