Por que o scp é muito mais lento que o http?

5

Eu tenho uma instância no Amazon EC2 que contém um arquivo grande-ish (~ 180MB). Eu preciso copiar esse arquivo para minha máquina local, então naturalmente eu tentei scp . Depois de tentar várias vezes apenas para obter velocidades máximas de 20-30kb / se caiu conexões (apenas uma vez eu cheguei ~ 200KB / s por um tempo curto, mas depois a conexão caiu), eu tentei HTTP. Em HTTP, obtive 1MB / se subiu para 2MB / s, finalizei a transferência em menos de dois minutos. Sobre o scp, o ETA foi de cerca de três horas.

Eu sei que o scp é mais lento que o HTTP por causa da criptografia, mas não acho que isso seja o único responsável por uma redução de 30x no desempenho. Então, eu estou supondo que há algum afogamento acontecendo, provavelmente no meu provedor. De alguma forma eu poderia descobrir com certeza? Ou existe alguma outra causa?

    
por Felix 19.01.2014 / 11:58

3 respostas

4

A assinatura típica de limitação de rede é uma velocidade quase constante (dentro de 10-20KB / s ou menos), portanto, se você está sendo acelerado, esse é um padrão a ser procurado. Outro padrão é "agrupamento" ou "estouro", onde você obtém um ou dois segundos de conectividade de alta velocidade, seguido por um período de conectividade de baixa velocidade. Se esse for o caso, é mais provável que seu problema esteja em buffer / cache em algum momento.

Normalmente, o equipamento de roteamento upstream de seu ISP será configurado para o tráfego QoS HTTP (ou mais especificamente, porta 80) com prioridade mais alta que todos os outros tráfegos, com a visão (não totalmente incorreta) de que a maioria dos clientes navegará na web, e eles não querem que o tráfego SCP / FTP / Skype / peer-to-peer de outra pessoa bloqueie seus canais.

A própria Amazon não aplica qualquer QoS (que eu saiba) às suas instâncias. Dito isso, você pode estar se deparando com problemas associados à CPU, especialmente se estiver executando uma instância EC2 t1.micro (ou outra pequena) com um recurso de CPU de baixa potência (ou baixa prioridade). Verifique o percentual de roubo da sua CPU (execute top e verifique o valor do st no canto superior direito) para ver se sua CPU está sendo 'roubada' por outras instâncias do EC2 - normalmente é o caso de instâncias de pouco uso - roubo da CPU permite que a Amazon recupere ciclos de CPU de instâncias inativas / ociosas para atender à demanda.

    
por 19.01.2014 / 16:41
1

O SSHD tem alguma sobrecarga relacionada à segurança e ao TCP. é por isso que é mais lento você pode usar o patch scp-hpn, é mais rápido! Você pode ver mais sobre o link

    
por 19.01.2014 / 19:40
0

Poderia ser seu ISP ou Amazon fazendo o afogamento. Faz sentido que a Amazon aplique a QoS que prefere strongmente o HTTP, já que esse seria o caso de uso mais comum.

Você pode usar o netcat para enviar tráfego sobre cada porta para testar. Você também pode reconfigurar o SCP (sshd) para executar pela porta 80 e ver que velocidades você obtém (ou vice-versa, reconfigure seu servidor da Web para ser executado pela porta 22).

    
por 19.01.2014 / 12:54