Ir al contenido
JelinaJelina DocumentationDocumentación técnica
Volver al sitio oficial

Manual de pruebas de rendimiento de EMS Builder

Versión del manual: v1.1
Regla estadística actual: al muestrear por número de muestras, se añaden dos muestras de límite, una al principio y otra al final; los resultados oficiales solo utilizan las intermedias.

Estas pruebas no conectan contadores, PLC ni pasarelas serie reales: utilizan dispositivos Modbus TCP simulados. Los resultados representan la capacidad de procesamiento de Edge-EMS Builder en condiciones ideales de comunicación, no el rendimiento de extremo a extremo en campo.

Área Pregunta que debe responderse
Adquisición ¿Cuántos puntos por segundo puede procesar EMS Builder de forma estable?
Trigger ¿Se ejecutan las tareas Lua según lo programado y con tiempos estables?
MQTT / coordinación ¿Se alcanza la cantidad de tareas prevista? ¿Hay retrasos o fallos?
Almacenamiento ¿Cómo afectan al rendimiento el almacenamiento en tiempo real y por cambios?
Recursos del sistema ¿Se acercan CPU, memoria y disco a sus límites?
Estabilidad ¿Hay caídas, reinicios o acumulación persistente durante ejecuciones prolongadas?
Carga Contenido
Adquisición Leer puntos de 20 dispositivos Slave simulados
Agregación Calcular sobre datos adquiridos mediante Lua
Trigger Ejecutar scripts Lua periódicos que generan escrituras, alarmas y acciones MQTT
Tareas MQTT Generar y publicar mensajes periódicamente
Coordinación Compartir datos y procesar coordinación entre dispositivos
Almacenamiento Guardar datos adquiridos, resultados y registros de tareas
Operación Cantidad por ejecución Función
Bucle de cálculo básico 100 Cálculos matemáticos, condiciones, bucles y operaciones de cadenas y tablas
Escritura de puntos originales 2 Escribir en los puntos de prueba 小数据0 y 小数据1
Escritura de punto agregado 1 Escribir en el punto agregado de prueba Agg
Alarmas locales 2 Generar dos alarmas de nivel uno
Alarma MQTT 1 Generar una alarma MQTT de nivel dos
Indicador Cálculo Por segundo
Ejecuciones de scripts Lua Trigger: 50 de 1s + 5 de 100ms = 100/s; Mqtt: 50/s; agregación: 50/s; intercambio: 10/s 210
Iteraciones básicas de Trigger 100 × 100 10.000
Escrituras de puntos originales de Trigger 100 × 2 200
Escrituras de puntos agregados de Trigger 100 × 1 100
Alarmas locales de Trigger 100 × 2 200
Alarmas MQTT de Trigger 100 × 1 100
Todas las acciones de escritura de Trigger 100 × 6 600
Publicaciones MQTT 50 × 1 50
Agregaciones activadas por cambios de datos 50 × 1 50
Tareas de intercambio de datos 10 × 1 10

Cálculo:

Ejecuciones Trigger/segundo = cantidad de Trigger de 1s + cantidad de Trigger de 100ms × 10
Escenario Puntos/s Agregaciones Trigger de 1s Trigger de 100ms Trigger/s MQTT/s Coordinación/s Almacenamiento Duración
S1 500 10 10 0 10 5 0 Tiempo real 30 minutos
S2 2.000 20 20 2 40 10 2 Tiempo real 30 minutos
S2.5 2.000 20 20 2 40 10 2 Por cambios 30 minutos
S3 5.000 30 50 4 90 20 10 Tiempo real 30 minutos
S3.5 5.000 30 50 4 90 20 10 Por cambios 30 minutos
S4 10.000 30 100 10 200 40 20 Por cambios 30 minutos
S5 20.000 40 200 10 300 60 40 Por cambios 30 minutos
S6 5.000 20 50 10 150 30 15 Tiempo real 72 horas
Modalidad de almacenamiento Descripción
Tiempo real Guarda cada adquisición según la configuración
Por cambios Guarda inmediatamente al cambiar el valor; si no cambia, guarda al menos una vez cada 10 segundos

S5 busca el límite de rendimiento. S6 debe ejecutarse realmente durante 72 horas.

Las pruebas cortas utilizan una cantidad fija de muestras. El siguiente ejemplo configura 1.002 muestras por escenario, separadas por 1 segundo, para conservar 1.000 muestras válidas. El informe AFE-E630 v1.3 utiliza 2.002 muestras y conserva 2.000 válidas:

Muestra 1: muestra de límite, excluida
Muestras 2–1001: muestras oficiales, 1,000 en total
Muestra 1002: muestra de límite, excluida

El informe oficial debe filtrar raw_data mediante sample_no y excluir las muestras inicial y final. No debe utilizar directamente el resumen de todas las muestras de la hoja summary.

Para una prueba completa de 30 minutos con muestreo cada segundo, adquiere 1.802 muestras y analiza las 1.800 intermedias. Las 1.002 muestras de un ensayo corto no sustituyen las 72 horas de estabilidad de S6.

Primero suma estos cinco servicios para cada sample_no; después calcula las estadísticas:

cb_core
cb_nginx
cb_backend
ems_backend
ems_postgresql
AEMS_CPU_raw(n) = suma de CPU de los 5 servicios con el mismo sample_no
CPU del equipo de 4 núcleos(n) = AEMS_CPU_raw(n) ÷ 4
Memoria de Edge-EMS Builder(n) = suma de memoria de los 5 servicios con el mismo sample_no

El informe debe incluir al menos media, P95, P99 y máximo. No sumes los máximos independientes de servicios que ocurrieron en momentos diferentes.

Ordena trigger_per_sec y mqtt_per_sec cronológicamente y excluye también el primer y último intervalo de un segundo, evitando intervalos incompletos en los extremos de la consulta.

Los intervalos de tareas no necesariamente se corresponden uno a uno con las muestras de recursos. Puede haber segundos sin registros o tareas acumuladas que terminen juntas al segundo siguiente. Indica el número de intervalos válidos e incluye:

  • Volumen medio procesado por segundo y porcentaje de cumplimiento del objetivo.
  • Media, P50, P95 y P99 del SpendTime medio por segundo.
  • Máximo SpendTime de una tarea individual entre todos los intervalos.
  • Número y proporción de segundos cuyo SpendTime medio supera 200 ms.

Si un segundo completo no tiene tareas, su volumen procesado cuenta como cero. No tiene latencia calculable y no debe inventarse un valor de 0 ms. Los scripts de supervisión posteriores deben indicar claramente inicio y fin de la ventana estadística para completar los segundos vacíos.

Categoría Estadísticas necesarias
Adquisición Puntos configurados, puntos correctos, fallos y descartes
Trigger Cantidad objetivo y real, tiempo medio, P50, P95, P99 y máximo
MQTT / coordinación Cantidad objetivo y real, duración y errores
CPU Media, P95 y máximo del conjunto de EMS Builder
Memoria Media, máximo y tendencia del conjunto de EMS Builder
Disco Tasas de lectura/escritura, espera de E/S y estado de escrituras de base de datos
Modbus Lecturas y escrituras, fallos, tiempos de espera agotados y reintentos por Slave
Estabilidad Caídas, OOM, reinicios anómalos y acumulación persistente

Cálculos principales:

Tasa de corrección = éxitos ÷ (éxitos + fallos + tiempos de espera agotados + descartes)
Cumplimiento = volumen medio real por segundo ÷ objetivo del escenario

SpendTime representa el tiempo real de ejecución de una tarea. Incluye P95, P99 y máximo además de la media para detectar retrasos largos ocasionales.

Prevalecen el contrato y los criterios de aceptación del proyecto. Si no existen criterios específicos, utiliza estas referencias:

Elemento Criterio recomendado
Volumen procesado Cumplimiento medio ≥ 99%
Tiempo de Trigger / MQTT P95 < 200 ms
CPU Media < 80% en equipos de 4 núcleos, sin saturación persistente
Memoria Media del equipo < 70%, sin crecimiento persistente
Tasa de corrección ≥ 99,99%, sin descartes sin explicar
Estabilidad 72 horas continuas sin caídas, OOM ni reinicios anómalos
Recuperación Recuperar estabilidad en 5 minutos tras reducir la carga
Situación Tratamiento
Duración insuficiente Marcar como «Incompleta»
No participan los 20 Slave Repetir la prueba
Escrituras concentradas en pocos Slave Ajustar el reparto y repetir
Generador de carga o red como cuello de botella Resolver y repetir
Faltan datos de éxito, fallo o tiempo de espera Marcar como «Datos incompletos»
S6 no alcanza 72 horas No declarar «Estabilidad superada»

S4 y S5 son pruebas de estrés. Al alcanzar el límite del sistema, indica «Límite de estrés alcanzado» o «No recomendado para funcionamiento continuo»; no lo presentes como capacidad ordinaria validada.

Informes por modelo:

Documentación relacionada: