Rendimiento FTPS con pequeños archivos XML pero muy alto volumen

1

Nuestra compañía está construyendo una integración b2b con otra parte que requiere que nos envíen un gran número ~ 100,000 archivos XML de aproximadamente 10-15 KB cada uno en el transcurso de una ventana de tres horas todos los días. Planeamos usar nuestro Servidor FTPS (TLS / SSL) que está altamente disponible y se ejecuta en Linux, para este intercambio.

La otra parte ha planteado algunas preocupaciones sobre los gastos generales de lectura / escritura de FTPS, indicando que es probable que la transferencia se extienda más allá de la ventana permitida. Nuestros especialistas en infraestructura me aseguran que no hay ningún problema con esa cantidad de archivos sobre FTPS, especialmente en un servidor HA Linux, siempre que eliminemos después de la recogida del archivo.

Quiero probar el enfoque anterior. ¿Alguien ha implementado una transferencia de alto volumen sobre FTPS? ¿Es una mala idea y deberíamos implementar un enfoque basado en colas?

Será demasiado tarde para descubrir problemas durante nuestra prueba de carga. Disculpas si la pregunta es un poco abierta. Tal vez si necesita detalles específicos, puedo proporcionar eso. Muchas gracias

Donz
fuente
Entonces, ¿eso es un promedio de 10 transferencias por segundo (se esperan picos y valles?) ... usando FTPS y eso es más que una WAN? ¿Cómo es la latencia? ¿Y estas transferencias serán consecutivas o habrá alguna concurrencia?
misha256

Respuestas:

1

Respuesta corta: Si los servidores están juntos, puede hacerlo, si están muy lejos, es probable que se pierda la ventana de transferencia. De cualquier manera, sin embargo, es una mala idea para la implementación "simple".

La respuesta más completa:

No creo que este sitio sea apropiado para el tipo de pregunta: la respuesta correcta será "depende" y "debe ejecutar sus propias pruebas". (También quizás Serverfault sería un foro mejor, ya que este foro es más para hobbiests).

Dicho esto, cuestiono el FTPS como una buena solución, ya que parece tener una sobrecarga muy alta: FTP es suficientemente malo antes de agregar la sobrecarga de cifrado adicional.

El hecho de que esto sea técnicamente factible dependerá significativamente de la velocidad de su tubería, la distancia entre los servidores y la cantidad de conexiones simultáneas que realice [las conexiones múltiples pueden mitigar la latencia alta en cierta medida]

Si puede combinar varios archivos en 1 archivo más grande, transfiéralos y luego descomprímalos, obtendrá ganancias de rendimiento sustanciales muy grandes porque:

  1. Reduce los problemas con la latencia (y las sobrecargas de cómputo del cifrado, pero ignoramos aquellos ya que no son sustantivos en relación con el resto del problema)
  2. Comprime los archivos reduciendo la cantidad de datos que deben transferirse.

No ha especificado cómo funcionarán las transferencias: sería una sesión FTPS única con varios archivos que se cargan o una sesión ftps separada para cada archivo.

La última solución, que sería más fácil de programar, sospecho, incurriría en una GRAN sobrecarga ya que cada conexión individual tendría que ser negociada, y esta negociación es costosa en relación con un archivo pequeño. (No soy experto en FTPS, pero TLS generalmente agrega alrededor de 6-7k de sobrecarga a cada solicitud y FTPS es una sesión FTP envuelta en una entrada TLS).

La latencia por solicitud, suponiendo que la carga útil fuera insignificante, aumentaría aproximadamente 3 veces. Esto puede no ser importante si los sitios están en la misma red, pero si, por ejemplo, tenía 1 lado de la conexión en Nueva York y el otro en LA 80ms, está teniendo problemas de latencia cuando multiplica esto por el número de archivos, y probablemente volará su ventana de transferencia, incluso si el NAS puede manejarlo.

davidgo
fuente
Buen resumen. Estoy seguro de que los números hablan por sí mismos. 10 transacciones por segundo simplemente no se pueden hacer, solo tendría 100 ms por archivo. El tiempo de ping solo puede ser más que eso en una WAN. A menos que se hayan utilizado múltiples conexiones, pero incluso entonces parece dudoso.
misha256
1

Voy a ofrecer una respuesta aquí que cuantifica el problema que probablemente enfrentará. He votado de davidgo responde también porque describe correctamente el problema.

Tenga en cuenta que 100,000 transferencias en tres horas equivalen a un promedio de aproximadamente 10 transferencias por segundo . Son 100 milisegundos cada transferencia.

La latencia de servidor a servidor tendría que ser un orden de magnitud inferior a eso, digamos 10 mseg, para que haya alguna esperanza de mantenerse al día con la tasa de transferencia.

Si los servidores están conectados a través de WAN, puede considerar que es casi imposible. A menos que vaya con varias conexiones concurrentes, pero si las transacciones en sí son consecutivas, efectivamente se niegan las posibles ganancias de las ofertas de concurrencia.

misha256
fuente