Jmeter stress test notes (3) - depuração / assinatura de scripts / cookies / melhoria da taxa de transferência / redução da taxa de anomalias / melhoria do desempenho simultâneo de uma única máquina

import XXXsign.Openapi2sign; --- Importar o método de assinatura no pacote jar 
String str1 = "12121"; --- campos que precisam ser assinados; aprender com o desenvolvimento quais campos são necessários 
String result = ""; 
-define o resultado da variável result = new Openapi2sign (). md5Encode (str1); --- chama o método de assinatura para assinar o campo de assinatura 
System.out.println (resultado); --- 
gera o campo assinado vars.put ("sign", result. toString ()); ---- Defina o valor do sinal de travessia global como o valor após a assinatura. O resultado da assinatura precisa ser executado

  

  Após escrever o script básico e os parâmetros de solicitação, inicie o script de depuração: o primeiro problema foi encontrado:

  A verificação da assinatura da solicitação falhou:

  Encontre informações através de vários online: finalmente entendi: as etapas são as seguintes:

    1. Aprenda com o desenvolvedor as regras e algoritmos de assinatura do front-end e obtenha o pacote XXXsign.jar de assinatura do front-end.

    2. Adicione o pacote ao diretório Jmeter / lib.

    3. Como a assinatura gerada por cada solicitação HTTP é diferente, é necessário adicionar um pré-processador a cada solicitação HTTP que requer uma assinatura "" Amostrador BeanShell e amostrador de depuração (para depuração, exclua ao executar oficialmente o script )

    4. Escreva um script, gere uma assinatura e defina a variável de assinatura, chame-a no elemento de configuração do cabeçalho de solicitação http

import XXXsign.Openapi2sign; --- Importe o método de assinatura no pacote jar 
String str1 = "12121"; --- campos que precisam ser assinados; aprenda com o desenvolvimento quais campos são necessários 
String token = "" ---- definição de assinatura token
String time = $ {__ time (/ 1000)} ---- Parâmetro de tempo necessário para a assinatura
String str00 = token + time + str1 --- emendado no campo de assinatura final String result = ""; --define result variable variable result = new Openapi2sign (). md5Encode (str00); --- chame o método de assinatura para assinar o campo de assinatura System.out.println (resultado); --- produza o campo assinado, quando executado oficialmente, comente esta linha . put ("sign", result.toString ()); ---- Defina o valor do sinal de travessia global como o valor após a assinatura. O resultado da assinatura precisa ser executado

 

  

 

 

 5. O script depurado, você pode ver a sequência da assinatura da solicitação nos resultados do amostrador de depuração e no cabeçalho da solicitação

 

 

 

 

 

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

 

  Após depurar a assinatura: encontrou a segunda falha de verificação de cookie.

    Não é adequado usar a interface de logon para obter o status de logon quando é necessário executar um grande número de testes de negócios simultâneos de usuários. Atualizar cookie novamente

  O método que eu uso é encontrar as regras para gerar o cookie do cookie de desenvolvimento corrigido. Bom para teste de interface.

  As regras para a correção de cookies são:

    sid = ID do usuário + 'sid', uid = ID do usuário, device_id = test (corrigido para teste)

  Encontre o DBA para escrever a regra no Redis.

  Inclua um gerenciador de cookies no grupo de encadeamentos Jmeter:

  No gerenciador de cookies: defina um formato de cookie fixo. O ID do usuário é transferido do arquivo de dados csv. Usado para simular cenários de negócios de solicitação multiusuário.

  

 

 

 

  Após o teste: ok

 

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

  Aumente o rendimento:

  A depuração de script é realizada no Windows 10. Durante o teste, verificou-se que a taxa de transferência está sempre alta e a taxa anormal é particularmente alta em 55%

  Pesquisa na Internet por um tempo ~ Eu me sinto como um ferramenta. Haha ~

  

  Primeiro, de acordo com a memória do meu computador, aumentei a memória jvm e a adicionei diretamente ao 4G de uma vez, feliz ~

  E configurado da seguinte maneira:

   Modifique o registro: Aumente a porta de conexão TCP e reduza o tempo de recuperação tcp:

    O Windows fornece portas 1024-5000 para links TCP / IP e leva quatro minutos para reciclá-los. Isso nos levou a encher a porta ao executar um grande número de solicitações em um curto período de tempo.

A solução é a seguinte:

No cmd, use o comando regedit para abrir o registro

Etapa 1: aumente o limite superior da porta temporária alocada dinamicamente à conexão de soquete TCP / IP do cliente.

(HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters):

Clique com o botão direito do mouse nos parâmetros e adicione um novo DWORD com o nome MaxUserPort

Em seguida, clique duas vezes em MaxUserPort, insira os dados numéricos como 65534, selecione decimal para a base

Etapa 2: reduzir o valor do tempo limite da conexão de soquete TCP / IP do cliente (o valor padrão é 240 segundos)

No registro, procure e clique na seguinte chave do registro.

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters

No menu Editar, clique em Novo, Valor DWORD e adicione o seguinte valor do Registro para reduzir o tempo em que a conexão está no estado TIME_WAIT quando a conexão é fechada. Quando a conexão está no estado TIME_WAIT, o par de soquetes não pode ser reutilizado:

Clique com o botão direito do mouse nos parâmetros e adicione um novo DWORD com o nome TcpTimedWaitDelay

Em seguida, clique duas vezes em TcpTimedWaitDelay, insira os dados numéricos como um número entre 30 e 240, selecione o conjunto de números decimais 30 segundos

Reinicie o computador

Depois de concluir as etapas acima, a taxa de transferência aumentou muito e a taxa anormal foi bastante reduzida.

 

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

Melhore o desempenho simultâneo independente

  Depois de melhorar o número de conexões de memória e tcp e modificar o tempo de conexão tcp. O desempenho da máquina foi quase reduzido por nós. Agora queremos depurar nosso script.

   1. Número de threads: cada número de threads ocupa uma certa quantidade de memória (eu mesmo testo 3 a 4M: palpite), o número de threads não deve exceder a memória jvm fornecida, caso contrário, ele ficará travado e lento. A taxa de transferência diminuiu e a taxa anormal aumentou. A simultaneidade diminui, o número de conexões diminui e assim por diante.

   2. Tempo de aquecimento: geralmente eu o defino para 30 segundos. Quando a configuração real da rosca é relativamente grande, se for maior que 500, 30 segundos não serão iniciados completamente. É recomendável que você o defina de acordo com o tempo de 500 threads e 30 segundos.

   3. Responda, afirme, veja a árvore de resultados, essas coisas estão desativadas.

   4. Timer de taxa de transferência preciso: Isso é útil em alguns cenários quando o número de solicitações de interface precisa ser limitado.

   

 

 

 

 

 

 

 

 

 

 

Acho que você gosta

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