Notas de la prueba de esfuerzo de Jmeter (3): depuración de scripts / firma / cookies / mejora del rendimiento / reducción de la tasa de anomalías / mejora del rendimiento concurrente de una sola máquina

import XXXsign.Openapi2sign; --- Importa el método de firma en el paquete jar 
String str1 = "12121"; --- campos que deben firmarse; aprende del desarrollo qué campos son necesarios 
String result = ""; 
-define el resultado variable resultado = nuevo Openapi2sign (). md5Encode (str1); --- llame al método de firma para firmar el campo de firma 
System.out.println (resultado); --- 
envíe el campo firmado vars.put ("signo", resultado. toString ()); ---- Establezca el valor del signo transversal global en el valor después de firmar. El resultado de la firma debe realizarse

  

  Después de escribir el script básico y los parámetros de solicitud, inicie el script de depuración: se encontró el primer problema:

  Solicitud de verificación de firma fallida:

  Encuentre información a través de varios en línea: finalmente lo obtuve: los pasos son los siguientes:

    1. Aprenda las reglas y algoritmos de firma de front-end del desarrollador, y obtenga el paquete de firma de front-end XXXsign.jar.

    2. Agregue el paquete al directorio Jmeter / lib.

    3. Dado que la firma generada por cada solicitud HTTP es diferente, debe agregar un preprocesador a cada solicitud HTTP que requiera una firma: "BeanShell sampler y debug sampler (para la depuración, elimine cuando ejecute oficialmente el script )

    4. Escriba un script, genere una firma y establezca la variable de firma, llámela en el elemento de configuración del encabezado de solicitud http

import XXXsign.Openapi2sign; --- Importa el método de firma en el paquete jar 
String str1 = "12121"; --- campos que deben firmarse; aprende del desarrollo qué campos son necesarios 
String token = "" ---- definición de firma token
String time = $ {__ time (/ 1000)} ---- Parámetro de tiempo requerido para la firma
String str00 = token + time + str1 --- empalmado en el campo de firma final String result = ""; --definir resultado variable resultado = new Openapi2sign (). md5Encode (str00); --- llame al método de firma para firmar el campo de firma System.out.println (resultado); --- muestre el campo firmado, cuando se ejecute oficialmente, comente esta línea vars. put ("sign", result.toString ()); ---- Establezca el valor del signo transversal global en el valor después de firmar. El resultado de la firma debe realizarse

 

  

 

 

 5. El script depurado, puede ver la cadena de firma de solicitud en los resultados del muestreador de depuración y el encabezado de solicitud

 

 

 

 

 

================================================

 

  Después de depurar la firma: se encontró el segundo error de verificación de cookies.

    No es adecuado utilizar la interfaz de inicio de sesión para obtener el estado de inicio de sesión cuando es necesario realizar un gran número de usuarios de pruebas comerciales simultáneas. Actualizar cookie nuevamente

  El método que uso es encontrar las reglas para generar la cookie de desarrollo de cookies fija. Bueno para pruebas de interfaz.

  Las reglas para la fijación de cookies son:

    sid = ID de usuario + 'sid', uid = ID de usuario, device_id = prueba (arreglado para probar)

  Encuentre el DBA para escribir la regla a Redis.

  Agregue un administrador de cookies al grupo de hilos Jmeter:

  En el administrador de cookies: establezca un formato de cookie fijo. El ID de usuario se transfiere desde el archivo de datos csv. Se utiliza para simular escenarios empresariales de solicitud multiusuario.

  

 

 

 

  Después de probar: ok

 

================================================== ====

  Aumentar el rendimiento:

  La depuración de scripts se realiza en Windows 10. Durante la prueba, se descubrió que el rendimiento siempre es alto y la tasa anormal es particularmente alta 55%

  Búsqueda en Internet por un tiempo ~ Me siento como un hombre de herramientas. Jaja ~

  

  En primer lugar, de acuerdo con la memoria de mi computadora, aumenté la memoria jvm y la agregué directamente a 4G de una sola vez, feliz ~

  Y configurado de la siguiente manera:

   Modifique el registro: aumente el puerto de conexión TCP y reduzca el tiempo de recuperación de TCP:

    Windows proporciona 1024-5000 puertos para enlaces TCP / IP, y lleva cuatro minutos reciclarlos. Esto nos hizo llenar el puerto cuando ejecutamos una gran cantidad de solicitudes en un corto período de tiempo.

La solución es la siguiente:

En cmd, use el comando regedit para abrir el registro

Paso 1: aumente el límite superior del puerto temporal asignado dinámicamente a la conexión de socket TCP / IP del cliente.

在 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters 下 :

Haga clic derecho en los parámetros y agregue un nuevo DWORD con el nombre MaxUserPort

Luego haga doble clic en MaxUserPort, ingrese los datos numéricos como 65534, seleccione decimal para la base

Paso 2: reduzca el valor de tiempo de espera de la conexión de socket TCP / IP del cliente (el valor predeterminado es 240 segundos)

En el registro, busque y haga clic en la siguiente clave de registro.

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters

En el menú Editar, haga clic en Nuevo, Valor DWORD, y luego agregue el siguiente valor de registro para reducir el tiempo que la conexión está en el estado TIME_WAIT cuando la conexión se cierra. Cuando la conexión está en el estado TIME_WAIT, el par de sockets no se puede reutilizar:

Haga clic derecho en los parámetros y agregue un nuevo DWORD con el nombre TcpTimedWaitDelay

Luego haga doble clic en TcpTimedWaitDelay, ingrese los datos numéricos como un número entre 30 y 240, seleccione el conjunto de números decimales 30 segundos

Reiniciar computadora

Después de completar los pasos anteriores, el rendimiento ha aumentado considerablemente y la tasa anormal se ha reducido considerablemente.

 

====================================

Mejore el rendimiento simultáneo independiente

  Después de mejorar el número de conexiones de memoria y TCP, y modificar el tiempo de conexión TCP. El rendimiento de la máquina casi ha sido reducido por nosotros. Ahora queremos depurar nuestro script.

   1. Número de subprocesos: cada número de subprocesos ocupa una cierta cantidad de memoria (yo mismo pruebo 3 a 4M: supongo), el número de subprocesos no debe exceder la memoria jvm dada, de lo contrario, se atascará y se ralentizará. El rendimiento disminuyó y la tasa anormal aumentó. La simultaneidad cae, el número de conexiones cae, y así sucesivamente.

   2. Tiempo de calentamiento: generalmente lo configuro en 30 segundos. Cuando la configuración real del hilo es relativamente grande, si es mayor que 500, 30 segundos no comenzarán por completo. Se recomienda que lo configure de acuerdo con el tiempo de 500 hilos y 30 segundos.

   3. Responda, afirme, vea el árbol de resultados, estas cosas están apagadas.

   4. Temporizador de rendimiento preciso: esto es útil en algunos escenarios cuando el número de solicitudes de interfaz debe ser limitado.

   

 

 

 

 

 

 

 

 

 

 

Supongo que te gusta

Origin www.cnblogs.com/Yanqiqi/p/12672540.html
Recomendado
Clasificación