Serie Jmeter: introducción básica a los temporizadores (11)

Introducción

El temporizador (Timer) en JMeter es un componente importante que se utiliza para simular escenarios en los que los usuarios envían solicitudes en diferentes intervalos de tiempo. Al utilizar temporizadores, puede simular la frecuencia con la que se envían las solicitudes en diferentes condiciones, como carga, simultaneidad y capacidad.

Usar temporizador

  • Puede agregar un temporizador debajo del muestreador , de modo que el temporizador solo actúe en el muestreador actual.
  • También puede agregar varios temporizadores en el grupo de subprocesos , contar la suma de los temporizadores y luego actuar en todos los muestreadores del grupo de subprocesos.

Alcance del temporizador

  • El temporizador se ejecuta antes de cada muestreador (muestreador), no después (independientemente de si la posición del temporizador está antes o debajo del muestreador);
  • Al ejecutar un muestreador, se ejecutarán todos los temporizadores en el alcance actual;
  • Si desea que el temporizador solo se aplique a uno de los muestreadores, agréguelo como nodo secundario;

Introducción al temporizador

Insertar descripción de la imagen aquí

1. Temporizador fijo

Insertar descripción de la imagen aquí
1. Si necesita hacer que cada hilo se detenga durante el mismo tiempo especificado antes de realizar la solicitud, puede usar este temporizador; debe tenerse en cuenta que el retraso del temporizador fijo no se incluirá en el tiempo de respuesta de un solo muestreador, pero sí incluirse en la transacción tiempo del controlador.

2. El temporizador fijo se coloca debajo del grupo de subprocesos y su alcance es que todas las solicitudes se retrasarán en el tiempo establecido por el temporizador fijo. Si se coloca dentro de la solicitud, el alcance es el tiempo de retraso de una sola solicitud (comúnmente usado).

3. Para el muestreador de "solicitud Java", el temporizador equivale al ritmo en loadrunner (el intervalo entre dos iteraciones);

4. Para el "controlador de transacciones", el temporizador es equivalente al tiempo de reflexión en loadrunner (tiempo de reflexión: en operación real, simula el tiempo de espera de usuarios reales durante la operación).

2. Temporizador aleatorio unificado

Insertar descripción de la imagen aquí
El tiempo de retraso que genera es un valor aleatorio y la probabilidad de que aparezca cada valor aleatorio es igual. El tiempo de retraso total es igual a un tiempo de retraso aleatorio más un tiempo de retraso fijo. El usuario puede configurar el tiempo de retraso aleatorio y el tiempo de retraso fijo.

Tiempo de retraso total = tiempo aleatorio dentro del rango especificado + tiempo de retraso fijo.
Insertar descripción de la imagen aquí

andom Delay Maximum (en milisegundos): la unidad de tiempo máxima de retraso aleatorio en milisegundos. Por ejemplo, aquí lo configuré en 1000 ms.

Compensación de retardo constante (en milisegundos): unidad de tiempo de retardo fija en milisegundos, lo configuré aquí en 2000 ms

Entonces, el rango de tiempo de retardo total es un valor entre 2000 milisegundos y 3000 milisegundos.

3. Temporizador de rendimiento preciso

Insertar descripción de la imagen aquí
Temporizador utilizado para controlar el rendimiento. Similar al Constant Throughput Timer, pero puede controlar las solicitudes con mayor precisión. La diferencia es que Constant Throughput Timer establece un temporizador basado en el tiempo (envía una solicitud cuando se alcanza la cantidad de segundos); Precise Throughput Timer establece un temporizador basado en el rendimiento (envía una solicitud cuando la cantidad alcanza una cierta cantidad). Es decir, se puede controlar la velocidad y el número de solicitudes.

Introducción de parámetros
Retrasar subprocesos para garantizar el rendimiento objetivo

  • Rendimiento objetivo (en muestras por “período de rendimiento”): el TPS que se espera probar puede tener una precisión de varios decimales (pero el informe final solo tendrá 1 decimal).
  • Período de rendimiento (segundos): cuántos segundos se ejecuta la prueba TPS (debido a que la unidad TPS son segundos, aquí se usa 1 segundo)
  • Duración de la prueba (segundos): duración de la prueba, solo manténgala consistente con el valor del grupo de subprocesos anterior

licencia por lotes

  • Número de subprocesos en el lote (subprocesos): se refiere a cuántos subprocesos están preparados para iniciar solicitudes juntos (es decir, el punto de encuentro), y el valor es coherente con TPS (si TPS es decimal, redondee aquí)
  • Retraso entre subprocesos en el lote (ms): tiempo de retraso entre el primer lote y el segundo lote; el valor predeterminado es suficiente

Configurar para garantizar un orden repetible

  • Semilla aleatoria (cambiar de 0 a aleatoria): las semillas aleatorias distintas de 0 se pueden repetir; 0 no se puede repetir y el valor predeterminado es suficiente

4. Temporizador de rendimiento constante

Insertar descripción de la imagen aquí
Puede permitir que JMeter se ejecute a un número específico de rendimiento (es decir, especificar TPS). Tenga en cuenta que esto requiere especificar el número de ejecuciones por minuto, no por segundo. Es muy práctico controlar la presión sobre el servidor. Por ejemplo, si conoce la cantidad máxima de subprocesos que el servidor puede manejar por minuto, debe realizar una prueba de resistencia a la fatiga a largo plazo en el servidor.

Calcular el rendimiento en función de tiene 5 opciones, a saber:

  • Solo este hilo : controla el rendimiento de cada hilo. Cuando se selecciona este modo, el rendimiento total = rendimiento objetivo * número de hilos.

  • todos los subprocesos activos : el rendimiento objetivo establecido se asignará a cada subproceso activo, y cada subproceso activo esperará un tiempo razonable después de que finalice la ejecución anterior antes de volver a ejecutarse. Los subprocesos activos se refieren a subprocesos que se ejecutan al mismo tiempo.

  • todos los subprocesos activos en el grupo de subprocesos actual : el rendimiento objetivo establecido se asignará a cada subproceso activo en el grupo de subprocesos actual. Cuando solo hay un grupo de subprocesos en el plan de prueba, esta opción tiene el mismo efecto que la opción de todos los subprocesos activos.

  • todos los subprocesos activos (compartidos) : básicamente la misma opción que Todos los subprocesos activos, la única diferencia es que cada subproceso activo esperará un tiempo razonable después de que todos los subprocesos activos hayan terminado de ejecutarse antes de volver a ejecutarse.

  • todos los subprocesos activos en el grupo de subprocesos actual (compartidos) : básicamente lo mismo que Todos los subprocesos activos en el grupo de subprocesos actual, la única diferencia es que cada subproceso activo esperará un tiempo razonable después de la ejecución anterior de todos los subprocesos activos para ejecutarse nuevamente.

5. Temporizador JSR223 (temporizador JSR223)

Temporizador JSR, en la última versión de jemter, se ha agregado este temporizador. Se puede entender que este temporizador es equivalente al "conjunto principal" del temporizador BeanShell. Se puede implementar utilizando múltiples lenguajes como java. , JavaScript y Beanshell: lo que esperas lograr.
Insertar descripción de la imagen aquí
Descripción de parámetros

  • Idioma: seleccione el idioma de escritura;
  • Parámetros (parámetros: parámetros de tipo String/String[]): parámetros pasados ​​al script;
  • Archivo de secuencia de comandos: ruta del archivo de secuencia de comandos. Después de ejecutar la secuencia de comandos, el valor de retorno es el tiempo de retardo del temporizador (unidad: milisegundos);
  • Almacenamiento en caché de compilación de scripts (si está disponible): si el lenguaje utilizado admite interfaces compilables (Groovy es una de ellas, Java, BeanShell y javascript no), JMeter almacenará en caché la compilación del script utilizando una cadena única en el resultado del plan de prueba.
  • Guión: escriba guiones manualmente.

usar
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

6. Sincronización del temporizador

Insertar descripción de la imagen aquí
El temporizador de sincronización se utiliza para simular la concurrencia multiusuario o escenarios de concurrencia más estrictos.

Se utiliza para establecer puntos de encuentro, bloquear subprocesos y sincronizar usuarios virtuales hasta que se alcance el número especificado de subprocesos, ejecutar tareas al mismo tiempo y luego liberarlas juntas, lo que puede generar mucha presión en un instante.

Nota: En general, el temporizador de sincronización se escribe tanto como el número de usuarios simultáneos. (El número de concurrencia depende de cuántas personas hayan llegado para lanzarlo juntas.

Descripción de parámetros

Number of Simulated Users to Group by(模拟用户组数量):
集合点个数 (执行的线程数),如果设置为0,等于设置为线程租中的线程数量。 
 
Timeout in milliseconds(超时时间):
指定线程数多少秒没集合到算超时(以毫秒为单位),默认为0。
如果设置为0,该定时器将会等待线程数达到了 "模拟用户组数量" 中设置的值才释放,不够的话就死等。
如果大于0,那么如果超过 "超时时间" 中设置的最大等待时间后还没达到 "模拟用户组数量" 中设置的值,Timer 将不再等待,释放已到达的线程。

(1)上面两个参数如果都设置了值,则在实际中是哪个条件先达到,定时器先执行哪个,如第一个参数释放线程数量先达到,则不会管超时时间的值,timer 会释放;如果第二个参数超时时间先达到,则不会再等线程数量,按照目前超时的时间点集合的线程数,timer 释放。 
(2)同步定时器(Synchronizing Timer)的超时时间设置要求: 超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

7. Temporizador aleatorio de Poisson

Insertar descripción de la imagen aquí

Este temporizador se detiene a intervalos aleatorios antes de cada solicitud de subproceso. La mayoría de los intervalos de tiempo ocurren en un valor específico. El retraso total es la suma del valor de distribución de Poisson y el valor de compensación.

Lo anterior indica que el tiempo de pausa se distribuirá entre 100 y 400 milisegundos:

(1) Lambda (en milisegundos): valor Lambda (en milisegundos);

(2) Compensación de retraso constante (en milisegundos): Compensación de retraso fijo (en milisegundos), el número de milisegundos de pausa menos el número de milisegundos de retraso aleatorio.

8. Temporizador aleatorio gaussiano

Insertar descripción de la imagen aquí

Temporizador gaussiano, genera un intervalo de tiempo distribuido gaussiano.

Si necesita que el tiempo de retraso de cada hilo sea una pausa de tiempo aleatoria que se ajuste a la distribución normal estándar, utilice este temporizador, el retraso total = valor de distribución gaussiana (promedio 0,0 y desviación estándar 1,0) * valor de desviación especificado + retraso fijo offset (Referencia de cálculo: Math.abs((this.random.nextGaussian() * valor de desviación) + offset de retardo fijo)).

Tiempo de retraso total = valor de distribución gaussiana (media 0,0 y desviación estándar 1,0) * valor de desviación especificado + compensación de retraso fijo.

Descripción de parámetros

  • Desviación: valor de desviación, que es un rango flotante;
  • Compensación de retardo constante: tiempo de retardo fijo.

9. Temporizador BeanShell

Insertar descripción de la imagen aquí

Los temporizadores Bean Shell, como su nombre lo indica: se alternan entre sí y los muestreadores debajo de sus nodos se ejecutan alternativamente. Según el número de ejecuciones activadas por el controlador, los subnodos <controlador lógico, muestreador> bajo el controlador se ejecutan secuencialmente. La ejecución desencadenada puede ser desencadenada por la cantidad de subprocesos en el grupo de subprocesos, la cantidad de bucles y el controlador lógico.

Descripción de parámetros

Reset Interpreter(重置解释器):
每次迭代是否重置解析器,默认为 false;在长时间运行的脚本中建议设置为 true。 
 
Parameters(参数:String 或者 String[] ):
BeanShell 脚本的入参。入参可以是单个变量(字符串);也可以是(字符串)数组,若是字符串数组,两个元素之间用空格隔开;也可以是常量。 
 
File Name(文件名):
BeanShell 脚本可以从脚本文件中读取。 
 
Script(脚本):
在 Script 区直接写 BeanShell 脚本。

Manifestación
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Artículo de referencia

Supongo que te gusta

Origin blog.csdn.net/m0_62091240/article/details/132919255
Recomendado
Clasificación