Eu tenho duas máquinas Debian Linux conectadas via LAN de 1 Gbit. Eu posso medir isso com uma transferência de arquivo HTTP bruto com a wget
qual fica em torno de 100 MB / s em qualquer direção.
Quando agora uso scp
, o máximo sem compressão que recebo é de cerca de 15 MB / s . A ativação da compactação com o -C
sinalizador me dá, dependendo do conteúdo, até 50 MB / s .
Ainda assim, parece que muita largura de banda é desperdiçada aqui. Eu não me incomodei por um longo tempo até que eu realmente tive que pensar em algumas transferências de arquivos de log muito grandes e só percebi o quão estranhamente lenta scp
é. É natural que eu use scp
, mesmo no ambiente da empresa, porque toda a infraestrutura está configurada para isso.
O que limita tanto o desempenho do scp? A CPU está vinculada por causa da criptografia? Quando eu uso htop
, parece que não faz uso de CPUs multicore, apenas uma das quatro CPUs é maximizada.
Existe uma maneira de aumentar a taxa de transferência? Eu tenho servidores HTTP e samba disponíveis, mas para mover arquivos entre máquinas Linux eu normalmente apenas uso SSH, foi assim que cresci. Mas isso agora me faz pensar sobre isso, parece que preciso considerar outras formas de transferência para grandes quantidades de dados.
O HTTP é usado apenas para aplicações específicas em PHP / Java / qualquer que seja, e o samba é usado por alguns motivos especiais que precisamos acessar nas máquinas Windows.
fonte
-C
opção de compactação a tornou mais lenta (21 MB / s em vez de 112 MB / s). Então, por favor, tome cuidado com-C
.Respostas:
Provavelmente é a criptografia. Você pode tentar scp com cifras diferentes, por exemplo:
Verifique a página de manual do ssh_config para obter as cifras disponíveis. RC4 (arcfour) é uma cifra rápida, mas provavelmente não é tão segura quanto algumas alternativas.
fonte
Parte disso pode ter a ver com a implementação interna do OpenSSH. Dê uma olhada no HPN-SSH para obter uma explicação decente por um motivo para os gargalos e correções no OpenSSH que podem resolvê-lo (se você estiver disposto a corrigir e reconstruir a partir do código-fonte).
fonte