Почему загрузка на S3 такая медленная?

12

Я использую s3cmdдля загрузки на S3:

# s3cmd put 1gb.bin s3://my-bucket/1gb.bin
1gb.bin -> s3://my-bucket/1gb.bin  [1 of 1]
  366706688 of 1073741824    34% in  371s   963.22 kB/s

Я загружаю из Linode, у которого ограничение исходящей пропускной способности составляет 50 Мбит / с в соответствии с поддержкой (примерно 6 МБ / с).

Почему я получаю такие медленные скорости загрузки на S3 и как их улучшить?


Обновить:

Загрузка того же файла через SCP в экземпляр m1.medium EC2 (SCP с моего Linode на диск EBS экземпляра) дает примерно 44 Мбит / с в соответствии с iftop(любое сжатие, выполняемое шифром, не является фактором).


Traceroute: вот traceroute на сервер, на который он загружает (согласно tcpdump).

# traceroute s3-1-w.amazonaws.com.
traceroute к s3-1-w.amazonaws.com. (72.21.194.32), максимум 30 прыжков, 60-байтовые пакеты
 1 207.99.1.13 (207.99.1.13) 0,635 мс 0,743 мс 0,723 мс
 2 207,99,53,41 (207,99,53,41) 0,683 мс 0,865 мс 0,915 мс
 3 vlan801.tbr1.mmu.nac.net (209.123.10.9) 0,397 мс 0,541 мс 0,527 мс
 4 0.e1-1.tbr1.tl9.nac.net (209.123.10.102) 1.400 мс 1.481 мс 1.508 мс
 5 0.gi-0-0-0.pr1.tl9.nac.net (209.123.11.62) 1,602 мс 1,677 мс 1,699 мс
 6 equinix02-iad2.amazon.com (206,223,115,35) 9,393 мс 8,925 мс 8,900 мс
 7 72.21.220.41 (72.21.220.41) 32.610 мс 9.812 мс 9.789 мс
 8 72.21.222.141 (72.21.222.141) 9,519 мс 9,439 мс 9,443 мс
 9 72.21.218.3 (72.21.218.3) 10.245 мс 10.202 мс 10.154 мс
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *

Задержка выглядит разумной, по крайней мере до тех пор, пока сервер не перестанет отвечать на запросы ping.

Том Мартинал
источник
Начните устранение неполадок. Как выглядит загрузка вашего процессора во время загрузки? Как tracerouteвыглядит? Очередь отправки на вашей стороне TCP-соединения почти заполнена или почти пуста? С помощью нескольких очень простых тестов вы можете быстро сузить проблему.
Дэвид Шварц

Ответы:

9

То, что вы можете увеличить скорость до 50 Мбит / с, не означает, что вы всегда будете получать 50 Мбит / с; Сетевой путь к S3, а также задержка также важны.

Если вы сможете использовать загрузку из нескольких частей, вы сможете разбить файл на несколько частей и загрузить его, используя несколько потоков, что, возможно, увеличит скорость загрузки.

gekkz
источник
1
Загрузка того же файла в экземпляр m1.medium EC2 через SCP из моего Linode работает со скоростью около 44 Мбит / с (в соответствии с iftopтем, сжатие не имеет значения), что намного ближе к пределу исходящей пропускной способности 50 Мбит / с. Загрузка S3 примерно в пять раз быстрее. Последние s3cmdподдерживают загрузку нескольких частей, но загружают их не одновременно, а последовательно. Есть ли лучшая утилита для загрузки на S3?
Том Марфенал
Я добавил в свой вопрос статистику скорости из SCP (мой экземпляр Linode -> EC2).
Том Мартинал
Вы пытались использовать другие инструменты, подобные s3cmd, для выполнения тестов? Это значит, что это не s3cmd, который работает медленно. Кроме того, в случае, если s3cmd каким-либо образом загружается через HTTPS, вы можете попытаться переключить это на HTTP. Другая идея заключается в том, что сам S3 загружается медленнее, поскольку у вас, похоже, нет проблем с EC2.
gekkz
4
Попробуйте s3multiput.
EEAA
11

На всякий случай, если кто-нибудь наткнется на это ....

У меня была проблема, из-за которой было очень медленно загружать данные из экземпляра ec2 в корзину s3, что оказалось очень просто - область корзины! Я использовал экземпляры ec2 в северной калифорнии, когда ведро было создано в соответствии с американским стандартом, его было очень медленно переносить, с бакетом, установленным в северную калифорнию, оно было кучей быстрее.

БОА
источник
1

Я видел много тем на форуме о медленной загрузке на S3 с использованием различных клиентов, таких как бесплатные инструменты командной строки (написанные на Python, кстати) и коммерческие.

Хотя у меня нет для вас веских доказательств, переключение клиента S3 (например, Cloud Berry Explorer) может решить вашу проблему. Попытайся! :)

Valentin
источник
3
На безголовом сервере? Не думай так.
EEAA
Позвольте ему / ей попробовать другого клиента, прежде чем судить. Есть s3cp, например.
Валентин
+1. На EC2 простое переключение с FileZilla на CuteFTP улучшило производительность x30.
Calvin1602