Diagnóstico de Rendimiento en Servidores FTP mediante Scripts Automatizados
Diagnóstico de Rendimiento en Servidores FTP mediante Scripts Automatizados
En uno de nuestros entornos de producción nos enfrentamos a un problema clásico: las transferencias FTP eran inusualmente lentas y no estaba claro si la causa era el servidor, la red, o el propio cliente. Para resolverlo, diseñamos una serie de scripts automatizados en PowerShell y Batch que nos permitieron simular cargas de trabajo reales y medir tasas de transferencia de forma controlada.
A continuación compartimos el enfoque, el código y las recomendaciones que pueden ayudarte a replicarlo en tus entornos.
🎯 Objetivo del Proyecto
Determinar si las lentitudes detectadas en transferencias FTP eran provocadas por:
- Problemas de red (latencia, congestión, pérdida de paquetes).
- Saturación del servidor FTP.
- Errores de configuración en los clientes.
🧰 Herramientas Utilizadas
- Cliente FTP de Windows (
ftp.exe). - Scripts
.txtcon comandos FTP (put,get). - Scripts de ejecución automática en
.bato.ps1. - Archivos de prueba con distintos tamaños.
⚙️ Preparación del Entorno
Creamos archivos de comandos para pruebas de subida y descarga:
ftp_script_upload.txt
open ftp://<IP_DEL_SERVIDOR>
user <USUARIO> <CONTRASEÑA>
put C:\Test\test.txt archivoPruebaSubido.txt
bye
ftp_script_download.txt
open ftp://<IP_DEL_SERVIDOR>
user <USUARIO> <CONTRASEÑA>
get archivoPruebaSubido.txt C:\Test\test.txt.download
bye
Ambos scripts utilizan el cliente FTP en modo automatizado con la opción -s.
🚀 Automatización de Pruebas
PowerShell (test.ps1)
$startTime = Get-Date
ftp -s:ftp_script_upload.txt
$uploadTime = (Get-Date) - $startTime
Write-Host "Tiempo de subida: $($uploadTime.TotalSeconds) segundos"
$startTime = Get-Date
ftp -s:ftp_script_download.txt
$downloadTime = (Get-Date) - $startTime
Write-Host "Tiempo de descarga: $($downloadTime.TotalSeconds) segundos"
También puedes hacerlo con un
.batclásico usando@echo offyecho %time%.
📊 Interpretación de Resultados
Tras varias ejecuciones programadas con archivos de distintos tamaños (5MB, 50MB, 200MB), obtuvimos los siguientes datos:
| Tamaño | Subida (s) | Descarga (s) | Análisis |
|---|---|---|---|
| 5 MB | 1.2 | 1.1 | OK |
| 50 MB | 12.5 | 25.3 | ⚠️ Descarga lenta |
| 200 MB | 48.0 | 115.7 | ❗ Bottleneck en descarga |
Estos resultados revelaron que la subida era consistente, mientras que la descarga sufría ralentizaciones crecientes, lo que sugería:
- Posible saturación del canal de retorno.
- Limitación en el número de conexiones simultáneas activas del servidor FTP.
- Problemas en el firewall o QoS.
🧪 Recomendaciones
- Aísla el entorno: realiza pruebas desde distintos equipos y redes.
- Monitorea simultáneamente: usa Wireshark, iperf o SNMP para corroborar cuellos de botella.
- Evalúa alternativas: prueba con SFTP (más seguro) o soluciones HTTP/HTTPS si el protocolo FTP está causando problemas.
🧵 Conclusiones
Automatizar estas pruebas nos permitió:
- Medir tiempos de subida/descarga sin intervención manual.
- Reproducir el escenario bajo distintas condiciones.
- Presentar evidencia cuantificable para escalar el incidente.
Este enfoque se puede aplicar a entornos industriales, centros de datos o integraciones legacy, y es especialmente útil en auditorías de red, mantenimiento o migraciones.
¿Has tenido que diagnosticar problemas similares con FTP o necesitas adaptar este sistema a protocolos más modernos como SFTP o API REST? ¡Déjame tu experiencia en comentarios!