Afecto de carga del servidor debido a conexiones SFTP excesivas para sincronizar el servidor

3

Estoy planeando sincronizar alrededor de 200 archivos muy pequeños por hora (menos de 1 KB por archivo), los archivos de origen están en un servidor SFTP remoto y los archivos de destino están en un servidor de Windows. Mi temor son las demasiadas conexiones que planeo hacer con el servidor SFTP (cada 10 segundos) para tener una experiencia casi en tiempo real.

Según otras preguntas, planeo usar la función de sincronización de WinSCP y el Programador de tareas de Windows (para ejecutar un script de WinSCP), pero como dije, tendré que ejecutarlo cada 10 segundos para obtener un resultado oportuno y los recursos del servidor son una limitación.

¿Alguna otra idea sobre cuánta carga significará esta conexión SFTP excesiva para el servidor? O cualquier sugerencia sobre una mejor manera de mantener esas carpetas "sincronizadas". Gracias de antemano por cualquier idea valiosa.

Andres Calle
fuente

Respuestas:

0

¿No sería mejor si mantienes tu conexión abierta (para ahorrar recursos necesarios para la autenticación SSH intensiva en CPU) y ejecutas el synchronizecomando en un bucle? Reconectando, cuando solo se pierde la conexión.

Esto se lograría fácilmente utilizando el script de PowerShell con el uso del ensamblado WinSCP .NET .

La secuencia de comandos WinSCP normal no permitirá bucles y pausas.

Si todos los archivos están en una sola carpeta (= una lista de directorios por ejecución de sincronización) y solo se modifican los archivos pequeños a la vez (= una transferencia de archivos), la carga sería pequeña.

Martin Prikryl
fuente
Gracias Martin por tu idea, pero tal vez hará que el proyecto sea demasiado complejo, quiero decir que será como crear una aplicación completa (por ejemplo, para manejar un reinicio de conexión del servidor, por ejemplo), mientras que supongo que debería haber una manera más clara de resolver (con suerte) Sin embargo, lo intentaré y te lo haré saber.
Andres Calle
Manera fácil: tome el ejemplo de PowerShell paraSession.SynchronizeDirectories . Poner un whilebucle alrededor de la $session.SynchronizeDirectorieslínea (+ dormir un poco). Y eso es. Para la reconexión, solo use el Programador. Configúrelo para ejecutar la tarea cada minuto más o menos, y no para ejecutar si la instancia anterior aún se está ejecutando (eso es predeterminado). Entonces, cuando se pierde la conexión, el código de PowerShell termina y el Programador reinicia la tarea.
Martin Prikryl