Stress test
Pruebas reales del 24 de octubre de 2026. Subidas simultáneas, tiempos de respuesta y consumo de memoria. Abrí cada fila para ver el resultado.
Configuración actual · 2 CPU y 4 GiB
6 planos10,69 s1,04 GiB
5 procesados y 1 rechazado por superar el límite de salida JSON. Sin falta de memoria ni reinicios.
El rechazo corresponde al plano KM 33–43. También falla al procesarlo individualmente; no es un rechazo por concurrencia.
12 planos36,59 s1,71 GiB
10 procesados y 2 rechazados por superar el límite de salida JSON. Sin falta de memoria ni reinicios.
Se subieron dos copias de cada archivo. Los dos rechazos son copias del KM 33–43. El tiempo corresponde a la última respuesta de la tanda.
24 planos54,18 s2,67 GiB
20 procesados y 4 rechazados por superar el límite de salida JSON. Sin errores 5xx, falta de memoria ni reinicios.
- Disponibilidad: 65 de 65 consultas a la web respondieron correctamente durante la ejecución de verificación.
- Memoria: aproximadamente el 67 % de los 4 GiB asignados al contenedor.
- CPU: 64,70 segundos de CPU acumulados por el contenedor durante la ráfaga; no equivalen a tiempo de espera.
- Respuesta por plano aceptado: entre 13,16 y 54,18 segundos, incluyendo subida y descarga.
Resultado de la repetición con el healthcheck corregido. La primera tanda de 24 con 4 GiB terminó en 55,60 s y alcanzó 2,97 GiB, pero el chequeo de disponibilidad marcó la instancia como no saludable.
El tiempo total incluye subida, procesamiento y descarga de todas las respuestas. El pico RAM es del contenedor completo, no de cada plano. Los resultados procesados son lecturas parciales.
Comparación · 2 CPU y 2 GiB
6 planos16,01 s1,11 GiB
5 procesados y 1 rechazo por salida JSON. Sin caída del servicio.
12 planos29,97 s1,64 GiB
10 procesados y 2 rechazos por salida JSON. La tanda terminó, aunque el listado de dibujos superó el timeout del healthcheck durante la carga.
24 planos · fallo8,02 s2 GiB
24 errores 502 y ningún plano completado. Se alcanzó el límite de memoria del contenedor: Docker confirmó un OOM y lo reinició automáticamente.
Los 8,02 segundos son el tiempo hasta el fallo, no un tiempo de procesamiento exitoso. La aplicación se recuperó y volvió a pasar una extracción de comprobación.
Condiciones y alcance
Planos de prueba6 archivos5 únicos
Lechería y los tramos KM 33–43, KM 42–57, KM 56–79 y dos archivos KM 79–104. Los dos últimos tienen el mismo contenido, comprobado por SHA256.
Los archivos pesan entre 3,61 y 12,89 MiB. Se repitieron dos y cuatro veces para formar las tandas de 12 y 24 subidas.
KM 33–43: supera los 128 MiB de JSON permitidos a la salida del lector, aunque el DWG de entrada pesa 12,89 MiB.
Servidor y mediciónVPS compartido4 vCPU
VPS con unos 16 GB de RAM y otras aplicaciones alojadas. CadExtractor tiene su propia cuota de 2 CPU y 4 GiB.
Recursos del contenedor muestreados cada 100 ms y logs de tiempo, CPU y memoria del lector por extracción. Las peticiones se lanzaron desde un cliente externo con concurrencia real, sin el antiguo bloqueo de una carga a la vez.
Chequeo de disponibilidadCorregido65/65 OK
El chequeo anterior recorría todos los dibujos guardados y tardaba 5,6 s, superando su timeout de 5 s. Traefik retiraba la instancia aunque el proceso seguía funcionando.
Ahora comprueba la página principal. Se repitió la prueba de 24: la web permaneció disponible y el contenedor terminó saludable. La lentitud del listado acumulado sigue pendiente de optimización.
Estas son pruebas de ráfaga con un corpus concreto, no una garantía de 24 trabajos sostenidos ni de lectura completa de cualquier DWG. La red, las cachés y la carga compartida influyen en los tiempos. La aplicación permanece sin límite global de concurrencia y sin cola.