Compartilhamento de tecnologia

jmeter distribuído (4)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1.gui

a interface gráfica do jmeter é usada principalmente para depurar scripts

1. Primeiro crie o script usando GUI

Faça um script primeiro
Demonstração: Como fazer o roteiro de uma cena mista?
Use uma proporção de negócios de 211

①Inicie o serviço de banco de dados

Serviços de banco de dados: incluindo mysql, redis
porta mysql padrão 3306

netstat -lntp | grep 3306
  • 1

No estado de escuta, 6379 é a porta padrão do redis

netstat -lntp | grep 6379
  • 1

Porta de serviço do projeto 18089

netstat -lntp | grep 18089
  • 1

②Arrogância de documento de interface de acesso

211 pode ser convertido em dois serviços de testes de estresse

Uma é registrar-se, a outra é registrar-se e fazer login para adicionar produtos.
Ambos são 50%

③Adicionar grupo de tópicos

jmeter—adicionar grupo de threads-adicionar thread-user-thread group

Converta dois serviços de teste de estresse

④Adicionar controlador de rendimento

jmeter — controlador de adição de lógica – controlador de rendimento

Converta dois serviços de teste de estresse.
O primeiro negócio de teste de estresse inclui registro, login e adição de produtos
O segundo negócio de teste de estresse é o registro

Insira a descrição da imagem aqui

50% cada
Insira a descrição da imagem aqui

⑤Adicionar solicitação http de amostra

solicitação jmeter-add-sampler-http
Converta dois serviços de teste de estresse
Insira a descrição da imagem aqui

O primeiro negócio de teste de estresse inclui registro, login e adição de produtos

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

O segundo negócio é o registro

Escreva de acordo com a arrogância do registro, insira os parâmetros
Insira a descrição da imagem aqui
Geralmente, você não precisa preencher o ID ao inseri-lo.
Addtime também não precisa ser preenchido
Copie e cole os dados do parâmetro no jmeter
Insira a descrição da imagem aqui

caminho baseado no URL
Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

⑥Adicionar gerenciador de cabeçalho http,

Todos eles passam json
Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

⑦Adicionar valor padrão da solicitação http

Preencha o ip e a porta de acordo com o documento da interface
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

⑧Adicione um ouvinte e visualize a árvore de resultados

Insira a descrição da imagem aqui

⑨Adicionar afirmação

É melhor adicionar afirmações

Insira a descrição da imagem aquiInsira a descrição da imagem aqui

2. Não-gui

-nExecute jmeter em modo não-gui
-t executa o local do arquivo de teste Especifica o script para executar o jmeter. Não está no caminho atual.
-l especifica o arquivo de resultado gerado, que é um arquivo jtl
-e Após a conclusão do teste, gere um relatório de teste
-o especifica o local de armazenamento do html do relatório de teste
-r início remoto

1. Prensa de máquina única

①Inscreva-se para imprensa

Instale jdk e jmeter no linux press
Instale em usr/local
Carregue o jmeter diretamente na janela para a impressora Linux, pois os plug-ins envolvidos no script de depuração também estão disponíveis.
Insira a descrição da imagem aqui

②Envie o script para a imprensa

Nota: Se o script envolver um arquivo de parâmetro csv, será necessário fazer upload do arquivo de parâmetro csv' para o diretório bin do jmeter no Linux.
Os relatórios de agregação e os listeners precisam ser desativados antes do upload

5 threads, adicione um a cada 30, ou seja, 150

A duração precisa ser maior que o tempo de ativação de 150. Se durar mais 50 segundos, defina-o para 200.
Insira a descrição da imagem aqui

Depois que o upload do jmeter for bem-sucedido, verifique a versão do jmeter e se ela está disponível.

Insira a descrição da imagem aqui

③Inicialização

Existem dois lugares
Primeiro, o caminho para armazenar o script de teste precisa criar um diretório para armazenar o relatório HTML.

Insira a descrição da imagem aqui
Antes de executar o script, o diretório res deve estar vazio
Segundo, limpe os dados da tabela do banco de dados sem considerar os dados existentes.
Insira a descrição da imagem aqui

④Executar script

Insira a descrição da imagem aqui

⑤Ver resultados

resultado
Concluiu 548 solicitações em 13 segundos

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Abrir relatório agregado
O número de solicitações com falha de ko

Insira a descrição da imagem aqui
tempo de resposta
Insira a descrição da imagem aqui

TPS (teste padrão)

Insira a descrição da imagem aqui

Como visualizar arquivos jtl?
jtl pode ser aberto em qualquer ouvinte, como visualização de árvore de resultados, relatório agregado, tps, tempo de resposta.
Se aberto em um relatório agregado, clique em Procurar
Insira a descrição da imagem aqui

Insira a descrição da imagem aqui
Como tps, tempo de resposta
Vejamos primeiro o tps
Adicionar tps
Clique para navegar

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Tempo de respostaInsira a descrição da imagem aqui

Insira a descrição da imagem aqui

2. Distribuído

Às vezes, uma imprensa não consegue atingir a meta e é necessária uma imprensa distribuída.
Afinal, os recursos de máquina única são limitados e é difícil suportar grandes impressoras simultâneas e também apresentam gargalos.

2.1 Princípio de distribuição

Website oficial:https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

Uma máquina servidora serve como uma máquina de controle
O resto das máquinas são usadas como máquinas de carga
O serviço solicitado pelo destino
O controlador controla remotamente a partida e a parada da máquina de carga enviando sinais e, ao mesmo tempo, coleta dados e resumos da máquina de carga
A máquina de carregamento inicia principalmente threads para acessar o servidor e direcionar o servidor sob teste de estresse.
Geralmente, o trabalhador inicia a máquina de controle do servidor jmeter para controlar remotamente a máquina de carga. A máquina de carga inicia o thread e solicita que o destino obtenha os dados e os envia de volta para a máquina de controle.

Onde os scripts são colocados quando distribuídos?
Um controlador, vários trabalhadores
Ao executar o não-gui, o script é transmitido ao servidor. Agora que está distribuído, para onde o script deve ser transmitido?
O script será transferido para o controlador. Durante a execução, o script será enviado para cada máquina de carga, ou seja, após a carga obter o script, ele começará a executar o script. para a máquina de controle para resumo.

2.2 Precauções para testes de pressão distribuída

(https://img-blog.csdnimg.cn/e3de7b8b65a1447db3bc3618876f62d3.png)
O firewall precisa ser fechado. Se o firewall não estiver fechado, a porta precisa ser aberta.
Todos os clientes devem estar na mesma sub-rede.
Certifique-se de que o jmeter possa acessar o servidor
Certifique-se de que as versões jmeter e java sejam iguais
desabilitar SSL

2.3 Preparação do ambiente

Requer 3 máquinas virtuais
Use 181 como controlador (máquina de controle)
Use 182.183 como Trabalhador (máquina de carga)
Ao mesmo tempo, essas três máquinas virtuais devem instalar o jdk e o jmeter.
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Ver versão do jdk
Insira a descrição da imagem aqui
Instale o jmeter em três máquinas virtuais
O jmeter da máquina local é transferido para o diretório usr/local da máquina virtual.
Verifique a versão do jmeter após o upload
Insira a descrição da imagem aqui

2.4 Configuração distribuída

①Trabalhador

182、182
Faça backup do arquivo de configuração jmeter.properties primeiro
Insira a descrição da imagem aqui

server_port pode ser modificado ou não. O valor padrão é 1099.
Insira a descrição da imagem aqui

desabilitar SSL
server.rmi.ssl.disable=false, altere falso para verdadeiro
Insira a descrição da imagem aqui

Comece jemter
./jmeter-servidor
Insira a descrição da imagem aqui
Verifique a porta 182 para ver se está em estado de escuta

Insira a descrição da imagem aqui

verificar
Faça Telnet da máquina de controle para a máquina de carga para ver se a porta está acessível.
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

②Controlador

Antes de configurar a máquina de controle, depure no jmeter na janela.
win: para depuração
Faça backup do arquivo de configuração jmeter.properties primeiro
Insira a descrição da imagem aqui
Por padrão, esta máquina é usada como máquina de carregamento.
A máquina de carregamento atual é uma máquina de carregamento remoto, altere remote_hosts=127.0.0.1 para remote_hosts=192.168.117.182:1099
O IP e a porta da máquina de carregamento remoto devem ser escritos aqui. Se múltiplos forem múltiplos, separe-os com vírgulas.
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
desabilitar SSL
Altere server.rmi.ssl.disable=false para server.rmi.ssl.disable=true
Insira a descrição da imagem aqui

Primeiro depure-o através desta máquina
Reinicie o jmeter e releia o arquivo de configuração
Insira a descrição da imagem aqui
Após depurar na janela, vá para o Linux para configuração.

Configurar em 181
Faça backup do arquivo de configuração jmeter.properties primeiro

Insira a descrição da imagem aqui

A máquina de carga atual é uma máquina de carga remota, queremote_hosts=127.0.0.1Mudar pararemote_hosts=192.168.117.182:1099
O IP e a porta da máquina de carregamento remoto devem ser escritos aqui. Se múltiplos forem múltiplos, separe-os com vírgulas.

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

servidor.rmi.ssl.disable=false
Vaiserver.rmi.ssl.disable=falseMudar paraserver.rmi.ssl.disable=true
Insira a descrição da imagem aqui
Quando o script for transmitido para a máquina de controle, o script será distribuído automaticamente para cada máquina de carga.
Login de cenário único de teste separado
Insira a descrição da imagem aqui
Depois de enviar o script, execute o script
Executar por meio de carregamento remoto

/usr/local/apache-jmeter-5.1.1/bin/jmeter -n -r -t test.jmx
  • 1

Insira a descrição da imagem aqui

Cada máquina de carga de trabalho (prensa) possui 5 fios, e a máquina de controle total possui 10 fios.
Insira a descrição da imagem aqui

Preparação ambiental
Duas máquinas virtuais. Há um mestre e dois escravos. A máquina Windows serve como um mestre e o escravo usa uma máquina virtual.
Fonte: https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

Problemas que surgem:
java.rmi.RemoteException: Não é possível iniciar. localhost.localdomain é um endereço de loopback

Objeto remoto criado: UnicastServerRef2 [liveRef: [endpoint:127.0.0.1:43474,objID:[-5a8dd143:17e2852fe88:-7fff, 3673082414768940798]]]
Falha ao iniciar o servidor: java.rmi.RemoteException: Não é possível iniciar. localhost.localdomain é um endereço de loopback.
Ocorreu um erro: Não é possível iniciar. localhost.localdomain é um endereço de loopback.
Insira a descrição da imagem aqui
Informações de exceção: Exceção de inicialização do servidor: Chamada de método remoto Java gerou exceção: Não é possível iniciar o serviço. localhost.localdomain é um endereço de loopback local

O nome do host obtido por meio do comando hostname é localhost.
Verifique a configuração dos hosts através do comando cat /etc/hosts localhost.localdomain localhost4... aponta para 127.0.0.1.
Insira a descrição da imagem aqui
Solução:
Especifique o endereço IP do host do servidor remoto (rmi.server.hostname)
Comece especificando o comando do terminal
./jmeter-server -Djava.rmi.server.hostname=192.168.2.2
Insira a descrição da imagem aquiInsira a descrição da imagem aqui