Jmeter (quarenta e sete) - Do nível básico ao avançado - Carregar configurações da máquina para implantação de testes de estresse distribuídos (tutorial detalhado)

1. Introdução

O tão esperado artigo apenas começou a ser publicado. Parece que demorei muito para escrevê-lo. Sempre quis escrevê-lo de forma clara e concisa, mas ainda escrevi muito dele de forma eloquente. Espero que todos vocês gosto disso! Originalmente, planejei explicar e compartilhar este artigo no teste de desempenho, mas alguns calçados infantis ou amigos fizeram muitas perguntas em particular. Eu realmente não aguentei e cansei de responder, então apenas compartilhei aqui. É apenas para referência, mas espero que seja útil para todos.

2. Por que usar testes distribuídos?

(1) O Jmeter é executado com base em programas Java. Ao usar o Jmeter para testes de desempenho no Windows, ele consome muita CPU e memória do cliente. Se o número de simultaneidades for um pouco maior (como 100, 1000... simultaneidade), um único computador A configuração muitas vezes não é suportada e é fácil travar. Mesmo que não trave, o computador funcionará muito lentamente, impossibilitando a realização de outras operações.
(2) Ao realizar testes de desempenho por meio da linha de comando cmd ou usar Jmeter no Linux, os recursos necessários do sistema podem ser bastante reduzidos; no entanto, o script jmeter precisa ser carregado no Linux e executado usando a linha de comando. Se o script for frequentemente alterado, upload frequente; após a conclusão do teste, os dados do resultado devem ser baixados para o ambiente GUI local para visualização. Quando o arquivo de resultado é grande, o download leva muito tempo, o que é sempre inconveniente.
(3) De acordo com a configuração geral da impressora, o modo GUI do jmeter (Windows) suporta até cerca de 300 threads de solicitação de simulação. Se for maior, causará facilmente atrasos, falta de resposta, etc. Isso é limitado ao próprio mecanismo e hardware do jmeter. configuração.
(4) Às vezes, para simular o máximo possível o cenário de negócios, é necessário simular um grande número de solicitações simultâneas.Neste momento, uma única impressora parece impotente. Em resposta a esta situação, a solução do JMeter é apoiar testes de pressão distribuídos, que consistem em alocar um grande número de simulações para múltiplas máquinas de pressão simultaneamente para atender a esse cenário de solicitação simultânea de grande tráfego.

Teste de estresse comum: uma única máquina pode exercer relativamente pouca pressão na máquina alvo. Os fatores limitantes incluem CPU, rede, IO, etc.
Teste de estresse distribuído: use várias máquinas para gerar pressão na máquina de destino e simular o acesso simultâneo de dezenas de milhares de usuários.

Se você quiser aprender testes automatizados, recomendo um conjunto de vídeos para você. Este vídeo pode ser considerado o tutorial de teste automatizado número um em toda a rede reproduzida por Bilibili. O número de pessoas online ao mesmo tempo atingiu 1.000 , e também há notas que podem ser coletadas e comunicadas por diversos canais.Mestre de comunicação técnica: 798478386    

[Atualizado] Uma coleção completa dos tutoriais práticos mais detalhados sobre testes automatizados de interface Python ministrados por Bilibili (a versão prática mais recente)_bilibili_bilibili [Atualizado] Uma coleção completa dos tutoriais práticos mais detalhados sobre testes automatizados de interface Python ministrados por Bilibili (versão prática ) A versão mais recente) tem um total de 200 vídeos, incluindo: 1. Por que a automação de interface deve ser feita para automação de interface, 2. Visão geral da solicitação de automação de interface, 3. Prática de interface para automação de interface, etc. do UP master, siga a conta UP. icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337

3. Princípio da medição de pressão distribuída

1. Em testes distribuídos, selecione uma máquina como máquina de gerenciamento (Contorller) e outras máquinas como máquinas agente (Agent) para execução de teste;

2. Ao executar o teste, o Contorller envia o script de teste para o Agente através da linha de comando, e então o Agente executa o teste (sem iniciar a GUI) e envia os resultados do teste para o Contorller;

3. Após a conclusão do teste, você pode ver os resultados do teste enviados pelo Agente no ouvinte do Controlador.Os resultados são um resumo de vários resultados de teste do Agente;

4. Preparativos antes de começar

Este breve tutorial explica como realizar testes de estresse usando vários sistemas. Antes de começarmos, há algumas coisas a verificar.

  • O firewall do sistema está fechado ou as portas corretas estão abertas.

  • Todos os clientes estão na mesma sub-rede.

  • Se estiver usando o endereço IP 192.xxx ou 10.xxx, o servidor estará na mesma sub-rede. Se o servidor não usar endereços IP 192.xx ou 10.xx, não deverá haver problemas.

  • Certifique-se de que o JMeter possa acessar o servidor.

  • Certifique-se de usar a mesma versão de JMeter e Java em todos os sistemas. Versões mistas não funcionarão corretamente.

  • Você configurou o SSL para RMI ou o desativou.

Depois de determinar que seu sistema está pronto, você poderá prosseguir para o teste remoto. Este tutorial pressupõe que você tenha o JMeter instalado em todos os sistemas. A maneira como o JMeter funciona é que um nó controlador inicia testes em vários nós de trabalho.

Neste tutorial, usamos apenas o modo GUI para demonstração. Na vida real você deve usar o modo CLI (NON GUI) para iniciar o teste de carga

Um nó controlador e vários nós de trabalho Antes de mergulhar nas instruções passo a passo, é uma boa ideia definir os termos e certificar-se de que estejam claros.

  • Nó Controlador: O sistema executando a GUI JMeter (teste de controle)

  • Nó de trabalho: um sistema executando jmeter-server que recebe comandos da GUI e envia solicitações ao sistema de destino

  • Alvo: o servidor web que planejamos testar

 

5. Teste de pressão comum

Teste de estresse comum: uma única máquina pode exercer relativamente pouca pressão na máquina alvo. Os fatores limitantes incluem CPU, rede, IO, etc. A seguir está uma descrição gráfica simples de um teste de pressão comum. Como mostrado abaixo:

6. Introdução ao teste de pressão distribuída Jmeter

No cenário em que o jmeter é usado para testes de estresse simultâneos em larga escala no trabalho e a memória, CPU e IO de rede de uma única máquina são limitados, a pressão do servidor ainda não aumentou, mas o servidor de teste de estresse travou devido a muita pressão simulada. Para que a ferramenta jmeter forneça recursos de carga mais poderosos, o jmeter fornece um mecanismo para que várias máquinas gerem cargas ao mesmo tempo. A seguir está o diagrama de arquitetura.

 

Princípio: Por exemplo, se eu configurar o número de threads no servidor jmeter para 10 e o número de ciclos para 100, ou seja, serão feitas 1.000 solicitações ao servidor de teste. Tenho 3 servidores agentes. Se eu optar por iniciar remotamente o teste de estresse no lado do servidor, então cada agente iniciará 10*100 solicitações ao servidor de teste, portanto, as solicitações geradas por este teste de estresse são 10*100*3=3.000 vezes.

Se você não entende muito bem o princípio, você o entenderá depois de ler as operações a seguir.

6.1 Descrição do princípio de execução distribuída JMeter

Pré-requisito: Instalar JDK (usamos a versão 1.8 aqui) + Jmeter (5.3) na máquina de agendamento

1. A máquina cliente (sistema de janela) serve como controlador para controlar as operações de múltiplas máquinas escravas.
2. É melhor instalar as mesmas versões do jdk e jmeter no controlador e nas máquinas escravas e configurar as variáveis ​​de ambiente. Os métodos de instalação e configuração são semelhantes aos do ambiente Windows.
3. O controlador inicia a máquina escrava através da interface GUI e envia o script de teste de estresse jmeter para cada escravo iniciado. O escravo inicia a execução após obter o script. O escravo não precisa armazenar o script localmente com antecedência, mas precisa ter arquivos dependentes no script (como arquivos csv, etc.).
4. Após a conclusão da execução de cada escravo, os resultados são enviados de volta ao controlador, que é coletado e exibido pelo controlador.

7. Construção de ambiente de teste de estresse distribuído Jmeter

7.1 Instruções antes de construir

Descrição do ambiente do servidor: para testes de desempenho, você pode comprar uma impressora diretamente na plataforma de nuvem sob demanda e liberar a impressora assim que o teste for concluído. Claro, isso depende dos recursos e da situação da empresa, se for realmente necessário informar antecipadamente ao líder sobre recursos ou equipamentos, tempo, etc.

Requisitos do servidor de pressão de ambiente distribuído:

  • São necessários um servidor (máquina de controle) e um agente (máquina de impressão), o agente é construído em um ambiente de servidor Linux (centos 6.5) e o servidor é construído em um ambiente Windows (servidor 2012).

  • A maioria dos gargalos nos testes de estresse é a largura de banda. Você precisa garantir que a largura de banda da impressora seja maior que a largura de banda do servidor, caso contrário a pressão não aumentará.

  • É necessário garantir que tanto o agente quanto o servidor estejam na mesma rede e, em um ambiente de placas multi-rede, é necessário garantir que as placas de rede iniciadas estejam todas no mesmo segmento de rede.

  • É necessário garantir a sincronização de horário entre o servidor e o agente.

  • Desligue o firewall.

7.2 Configuração no Windows

1. Instale a mesma versão do JDk e Jmeter no sistema Windows (consulte a instalação do agendador)

Nota: Tanto o JDK quanto o Jmeter devem configurar variáveis ​​de ambiente

Configuração de variáveis ​​de ambiente Jmeter:

Adicione: JMETER_HOME=C:\jmeter\apache-jmeter-3.3\bin às variáveis ​​de ambiente do sistema

Adicione a seguinte configuração à variável de sistema path: %JMETER_HOME%\bin;

7.2.1 Controlador do Agendador

1. Configure o jmeter de acordo com as etapas acima em várias máquinas, selecione uma delas como máquina de agendamento e as outras como máquina de execução. O irmão Hong usa seu computador local como máquina de agendamento.

2. Modifique JMETER_HOME/ na máquina de agendamento bin/jmeter.propertiese adicione o IP e a porta da máquina de execução. 1099 é a porta de comunicação rmi padrão.

hosts_remotos=192.168.174.130:1000.192.168.3.148:1888

No código,  192.168.174.130:1000está o IP da máquina de execução e o número da porta.

3. Remova o server.rmi.ssl.disable=falsecomentário do comentário do meio e altere falso para verdadeiro, ou copie esta linha de código e altere falso para verdadeiro. Claro, não se esqueça de remover o comentário anterior.

server.rmi.ssl.disable=true  

4. Inicie o serviço na máquina que executa o script server, JMETER_HOME/bin/jmeter-server

5. Execute comandos distribuídos na máquina de controle

#使用 -r 启动所有从机执行脚本
jmeter -n -t testplan/comic.jmx -r -l testResult/result1.jtl  

#指定从机IP
jmeter -n -t testplan/comic.jmx -R 10.15.243.53,10.15.230.78 -l testResult/result1.jtl
7.2.2 Agente Executor

1. Seguindo o mesmo princípio do despachante, encontre o código correspondente e modifique jmeter.propertieso código no arquivo, da seguinte forma:

server_port=1000
server.rmi.localport=1000
server.rmi.ssl.disable=true

2. Personalize o número da porta na máquina de execução

(1) Entre no diretório bin Jmeter, encontre o arquivo Jmeter.properties, abra o arquivo e modifique os dois itens de configuração a seguir, por exemplo, modifique o número da porta para: 1355 (o número da porta padrão é: 1099) (lembre-se de descomentar )

server_port=1355
server.rmi.localport=1355
server.rmi.ssl.disable=true

(2) Inicie Jmeter-server.bat na máquina de execução, conforme mostrado na figura abaixo, o número da porta foi modificado para: 1000. O irmão Hong modificou-o para 1000 aqui.

3. Adicione uma máquina de carregamento remoto ao despachante

Entre no diretório bin Jmeter, encontre o arquivo Jmeter.properties e configure-o da seguinte forma:

 4. Abra o Jmeter no despachante, conforme mostrado abaixo para iniciar a máquina de carregamento remoto

5. Verificação: Se funcionar normalmente após a inicialização, você poderá ver os resultados da execução da máquina de carregamento remoto no despachante, conforme mostrado abaixo:

 A seguinte tela aparece na máquina de execução:

7.3 Configuração no Linux

1. Instale as mesmas versões JDK e Jmeter do agendador no Linux

A referência de configuração das variáveis ​​de ambiente JDK é a seguinte: https://www.cnblogs.com/du-hong/p/14428790.html

A configuração da variável de ambiente do Jmeter, export PATH=/opt/apache-jmeter-3.3/bin/:$PATH (local do arquivo de configuração: /etc/profile) é mostrada abaixo:

 Verificação: Jmeter -v

 2. Personalize o número da porta na máquina de execução

(1) Entre no diretório bin Jmeter, encontre o arquivo Jmeter.properties, abra o arquivo e modifique os dois itens de configuração a seguir, por exemplo, modifique o número da porta para: 1355 (o número da porta padrão é: 1099)

server_port=1355
server.rmi.localport=1099

 

3. Adicione uma máquina de carregamento remoto ao despachante

Entre no diretório bin Jmeter, encontre o arquivo Jmeter.properties e configure-o da seguinte forma:

 4. Abra o Jmeter no despachante, conforme mostrado abaixo para iniciar a máquina de carregamento remoto

5. Verificação: Se funcionar normalmente após a inicialização, você poderá ver os resultados da execução da máquina de carregamento remoto no despachante, conforme mostrado abaixo:

 A seguinte tela aparece na máquina de execução:

8. Teste de pressão distribuída (tudo iniciado)

1. Selecione Remote Start-->Remote All Start, conforme mostrado na figura abaixo:

2. Resultados do mestre, tudo iniciado, Hongge configurou 2 escravos, portanto há dois resultados de execução:

 

 3. Visualize a árvore de resultados e as máquinas de execução (duas máquinas com dois resultados), conforme figura a seguir:

Verifique a árvore de resultados conforme mostrado na figura:

 A máquina de execução está configurada com sistema Linux e sistema Windows, conforme mostra a figura:

9. Resumo

9.1 Problemas encontrados durante o combate real

1. O servidor Jmeter falha ao iniciar no Linux, conforme mostrado na figura a seguir:

 Solução: adicione os seguintes parâmetros ao iniciar o Jmeter-server e conclua o comando da seguinte forma:

./jmeter-server -Djava.rmi.server.hostname=192.168.0.199

2. Nem a variável de ambiente JAVA_HOME nem a variável de ambiente JRE_HOME estão definidas

Ao usar java para iniciar remotamente o serviço jmeter no servidor linux, ele reportaNeither the JAVA_HOME nor the JRE_HOME environment variable is defined,如下图所示:

 Solução: Consultar esse erro é basicamente uma operação do Tomcat. Edite o arquivo e adicione e jmeter/bin/jmeter-serverno topo .JAVA_HOMEJRE_HOME

 

3. O despachante relata o seguinte erro:

Solução: Defina a porta na máquina de execução como uma porta fixa (como personalizar a porta foi explicado na implantação anterior, consulte acima)

4. Ocorre um erro ao iniciar o Jmeter: Java.net.ConnectionException: Conexão recusada:connect

 

Resolva o problema: reinicie o serviço do servidor Jmeter na máquina de execução, ou seu serviço não foi iniciado (isso pode ser resolvido em meu ambiente de teste. Se não puder ser resolvido em seu ambiente, verifique cuidadosamente o servidor Jmeter em a máquina de execução. Mensagem de erro no log)

5. Inicie o Jmeter e relate um erro

Solução: 1. Encontre JMETER_HOME\bin\jmeter.properties
2. Modifique server.rmi.ssl.disable=true (lembre-se de remover o # antes de server.rmi.ssl.disable=true) e reinicie jmeter-server.bat

9.2 Outras instruções

1. É melhor separar a máquina de agendamento (mestre) e a máquina de execução (escravo), pois o mestre precisa enviar informações ao escravo e receber os dados de teste retornados pelo escravo, o próprio mestre consumirá, por isso é recomendado usar uma máquina separada como Mater.

2. Arquivo de parâmetros: Se csv for usado para parametrização, então o arquivo de parâmetros precisa ser copiado em cada escravo e o caminho precisa ser definido como o mesmo.

3. É melhor ter a mesma versão do Jmeter e plug-ins instalados em cada máquina, caso contrário, ocorrerão alguns problemas inesperados.

4. Se o número de threads simultâneos definido no script for 100 e três máquinas escravas forem usadas para exercer pressão, então, para o servidor, o número de threads simultâneos neste momento será 300.

5. Para reduzir a possibilidade de erros, é melhor seguir os seguintes requisitos de distribuição do Jmeter:

  • Cada máquina instala a mesma versão do jdk no mesmo diretório;

  • Cada máquina instala a mesma versão do jmeter no mesmo diretório;

  • Configure o mapeamento entre IP e nome de host de /etc/hosts.

  • Modifique os parâmetros de memória padrão do jmeter em cada máquina de 512m para o tamanho apropriado.

 

Acho que você gosta

Origin blog.csdn.net/Faith_Lzt/article/details/133138083
Recomendado
Clasificación