Tengo dos máquinas Debian Linux conectadas a través de LAN de 1 Gbit. Puedo medir esto con una transferencia de archivos HTTP sin procesar con la wget
que se obtienen alrededor de 100 MB / s en cualquier dirección.
Cuando ahora lo uso scp
, el máximo sin compresión que obtengo es de alrededor de 15 MB / s . Habilitar la compresión con la -C
bandera me da, dependiendo de los contenidos, hasta 50 MB / s .
Aún así, parece que se desperdicia mucho ancho de banda aquí. No me molesté durante mucho tiempo hasta que realmente tuve que pensar en algunas transferencias de archivos de registro muy grandes y me di cuenta de lo extrañamente lenta que scp
es. Es natural para mí usarlo scp
, incluso en el entorno de la empresa, porque toda la infraestructura está configurada para ello.
¿Qué limita tanto el rendimiento de scp? ¿Está vinculado a la CPU debido al cifrado? Cuando uso htop
parece que no hace uso de CPU multinúcleo, solo una de las cuatro CPU está al máximo.
¿Hay alguna manera de aumentar el rendimiento? Tengo servidores HTTP y samba disponibles, pero para mover archivos entre máquinas Linux usualmente solo uso SSH, esa es la forma en que crecí con él. Pero esto ahora me hace pensarlo, parece que necesito considerar otras formas de transferencia para grandes cantidades de datos.
HTTP solo se usa para aplicaciones específicas en PHP / Java / lo que sea y samba se usa por algunas razones especiales por las que necesitamos acceso desde máquinas Windows.
fuente
-C
opción de compresión lo hizo más lento (21 MB / s en lugar de 112 MB / s). Así que por favor cuídate-C
.Respuestas:
Probablemente sea el cifrado. Puede probar scp con diferentes cifrados, por ejemplo:
Consulte la página del manual ssh_config para ver los cifrados disponibles. RC4 (arcfour) es un cifrado rápido, pero probablemente no tan seguro como algunas alternativas.
fuente
Parte de esto puede tener que ver con la implementación interna de OpenSSH. Eche un vistazo a HPN-SSH para obtener una explicación decente por una razón de los cuellos de botella y los parches para OpenSSH que pueden resolverlo (si está dispuesto a parchear y reconstruir desde la fuente).
fuente