Solución de Profiling para Aplicación Bancaria ProCash

Contexto

  • Aplicación Legacy: Java 1.7 + Tomcat 7
  • Arquitectura: 3 aplicaciones web desplegadas
  • Desafío: Optimizar rendimiento sin impactar producción

Arquitectura de Solución

Diagrama de Componentes

graph TD
    A[Máquina del Operador] --> |HTTP/JSON-RPC| B[Servidor EC2 de Pruebas]
    A --> |JMX Puerto 9999| B
    
    subgraph B [Servidor EC2 de Pruebas]
        C[Tomcat 7.0.99]
        D[9 Aplicaciones ProCash]
        E[Java 1.7 con JMX habilitado]
        F[GC Logging Activo]
    end
    
    A --> |Herramientas| G[JMeter 3.1]
    A --> |Herramientas| H[VisualVM 1.3.9]

Herramientas de Profiling

JMeter: Generación de Carga

Características

  • Grabación de flujos de usuario reales
  • Simulación de carga concurrente
  • Registro detallado de solicitudes

VisualVM: Análisis de Rendimiento

Hallazgos Iniciales

  • Consultas SQL más lentas:
    • Primera consulta: 678 ms (6.4% del tiempo)
    • Segunda consulta: 440 ms (4.6% del tiempo)
  • Promedio de consultas entre 200-300 ms

Métricas de Sistema

Resumen de Recursos

  • Memoria Heap:
    • Tamaño total: ~805 MB
    • Memoria usada: ~331 MB
  • Threads:
    • Hilos en vivo: 69
    • Total de hilos iniciados: 159

Flujo de Trabajo de Profiling

graph LR
    A[Captura de Flujo] --> |Grabación| B[Test Plan JMeter]
    B --> |Generación de Carga| C[Simulación de Usuarios]
    C --> |Monitoreo| D[VisualVM]
    D --> |Análisis| E[Identificación de Cuellos de Botella]
    E --> |Optimización| F[Mejoras en Aplicación]

Capacidades de Exportación

Tipos de Datos Exportables

  • Perfiles de CPU (.nps)
  • Heap dumps (.hprof)
  • Logs de rendimiento de JMeter (.jtl)
  • Registros de garbage collection

Beneficios Esperados

Valor Técnico

  • 🔍 Visibilidad detallada del rendimiento
  • 📊 Identificación precisa de cuellos de botella
  • 🚀 Optimización sin modificar código de producción

Valor de Negocio

  • Mejora de la experiencia del usuario
  • Reducción de costos de infraestructura
  • Prevención proactiva de problemas de rendimiento

Próximos Pasos

  1. Definición de escenarios críticos con el cliente
  2. Configuración final del ambiente de pruebas
  3. Ejecución de profiling completo
  4. Análisis detallado de resultados
  5. Propuesta de optimizaciones

Inversión

  • Costo: $0 (Herramientas Open Source)
  • Esfuerzo: 1-2 semanas de implementación
  • Beneficio: Optimización continua de la aplicación

Integración de Herramientas

graph TD
    A[Terminal 1: VisualVM] -->|Conectado a JMX 9999| B[Servidor Tomcat]
    C[Terminal 2: JMeter] -->|Genera Carga HTTP| B
    B --> |Métricas en Tiempo Real| A
    B --> |Logs de Rendimiento| D[Archivos de Resultados]
Made with Slides.com