Назад | Перейти на главную страницу

Почему scp намного медленнее, чем http?

У меня есть экземпляр на Amazon EC2, который содержит файл большого размера (~ 180 МБ). Мне нужно скопировать этот файл на свой локальный компьютер, поэтому, естественно, я попробовал scp. После нескольких попыток получить максимальную скорость 20-30 кб / с и разорванных соединений (только однажды я ненадолго достиг ~ 200 Кб / с, но затем соединение разорвалось), я попробовал HTTP. По HTTP я получил 1 МБ / с, а он увеличился до 2 МБ / с, завершил передачу менее чем за две минуты. По scp расчетное время прибытия составило около трех часов.

Я знаю scp работает медленнее, чем HTTP, из-за шифрования, но я не думаю, что одно это может привести к ~ 30-кратному снижению производительности. Так что я предполагаю, что происходит какое-то троттлинг, вероятно, у моего провайдера. Как я могу узнать наверняка? Или есть какая-то другая причина?

Типичный признак дросселирования сети - это почти постоянная скорость (в пределах 10-20 КБ / с или около того), поэтому, если вас дросселируют, это шаблон, который следует искать. Другой шаблон - это «группирование» или «пакетирование», при котором вы получаете одну или две секунды высокоскоростного подключения, за которым следует период низкоскоростного подключения. Если это так, ваша проблема, скорее всего, связана с буферизацией / кешированием в какой-то момент.

Как правило, оборудование восходящей маршрутизации вашего интернет-провайдера будет настроено на трафик QoS HTTP (или, точнее, порт 80) с более высоким приоритетом, чем весь другой трафик, с (не совсем неверным) представлением, что большинство их клиентов будут просматривать веб-страницы, и они не хотят, чтобы чужой трафик SCP / FTP / Skype / peer-to-peer блокировал их каналы.

Сами Amazon не применяют QoS (насколько мне известно) к своим экземплярам. Тем не менее, вы можете столкнуться с проблемами, связанными с процессором, особенно если вы используете t1.micro (или другой небольшой) экземпляр EC2 с маломощным (или низкоприоритетным) ресурсом ЦП. Проверьте процент кражи процессора (запустите top и проверьте значение% st в правом верхнем углу), чтобы увидеть, не `` украден '' ли ваш ЦП другими инстансами EC2 - обычно это случается с инстансами с низким уровнем использования - Кража ЦП позволяет Amazon восстанавливать циклы ЦП из состояния бездействия / простоя экземпляры для удовлетворения спроса.

SSHD имеет некоторые накладные расходы, связанные с безопасностью, и TCP застревает. поэтому он медленнее, вы можете использовать патч scp-hpn, он быстрее! Вы можете увидеть больше на http://www.psc.edu/index.php/hpn-ssh

Это может быть ваш интернет-провайдер или Amazon. Для Amazon было бы разумно применить QoS, который сильно отдает предпочтение HTTP, поскольку это будет их наиболее распространенный вариант использования.

Вы можете использовать netcat для отправки трафика через каждый порт для тестирования. Вы также можете перенастроить SCP (sshd) для работы через порт 80 и посмотреть, какие скорости вы получите (или, наоборот, перенастройте свой веб-сервер для работы через порт 22).