Por que Executar Planos de Teste no modo Command-line?
A principal razão para executar um teste de carga no modo Command-line (CLI) e não através do modo GUI é que este último pode diminuir as capacidades do JMeter. Usar a GUI para executar o teste pode consumir CPU e memória adicionais que podem impactar negativamente os resultados do teste. O ambiente do modo CLI é a escolha ideal para a execução do teste e é a metodologia recomendada pela equipe Apache JMeter.
Executar um teste através de uma janela de comando pode ser um pouco old school, mas ainda é muito eficaz.
Verificando a Lista de Verificação Pré-Teste
É uma boa prática de teste utilizar uma lista de verificação pré-teste para ajudar a obter o uso mais eficaz do seu tempo de teste.
Itens recomendados na lista de verificação incluem:
- Coordenar o horário de início e duração do teste de carga com a equipe administrativa
- Garante impacto mínimo do teste para usuários e outros colegas no Site ArcGIS Enterprise
- Ajuda a prevenir system noise de outras atividades e usos que podem "poluir" os resultados do teste
- Ao testar um Serviço ArcGIS tradicional (por exemplo, dedicado), certifique-se de que as instâncias mínimas e máximas estejam configuradas adequadamente
- Isto é necessário se seu objetivo de teste for entender o throughput máximo alcançável pelo serviço
- Para throughput máximo, uma regra geral é definir as instâncias máximas para o número de núcleos da CPU
- Para desempenho previsível, defina as instâncias mínimas para o número das instâncias máximas
- Ajustar instâncias fará com que um serviço reinicie (planeje adequadamente)
- Aumentar as instâncias mínimas de um serviço exigirá memória física adicional da máquina ArcGIS Server

- Se o Plano de Teste contiver um Listener como o View Results Tree, certifique-se de desativá-lo na GUI
- Listeners em execução podem aumentar o consumo dos recursos do cliente de teste e potencialmente impactar o teste

- Validar o Thread Group para lógica de carga em etapas e duração do teste
- Se o teste estiver agendado para uma janela específica, certifique-se que o teste será configurado para rodar pelo tempo esperado
- Garantir que o Nível de Log do ArcGIS Server não esteja configurado como DEBUG ou VERBOSE.
- Embora esses níveis de log possam ser úteis para solucionar problemas, eles podem impactar o desempenho e escalabilidade dos serviços sendo testados
Guia do Script Batch
Como a linha de comando é utilizada para executar o teste de carga Apache JMeter, é vantajoso reunir as ações e preparação do ambiente em um script batch (por exemplo, arquivo *.bat no Windows). Isso favorece a repetibilidade e manutenção.
Variáveis
Usar variáveis é uma maneira prática de melhorar a manutenção de um script. Embora codificar valores diretamente seja tecnicamente aceitável, isso pode prejudicar a legibilidade se os caminhos para certos itens forem muito longos. As seções seguintes são os principais componentes que nosso batch utilizará variáveis.
Memória
Por padrão, Apache JMeter (versão 5.4.1) roda com mínimo e máximo de 1GB de memória. Isso é adequado para testes simples rodando em hardware mais antigo, mas alguns testes requerem lógica mais complexa ou múltiplos arquivos de dados e pode ser necessária mais memória para garantir que os resultados dos testes não sejam impactados
Nota: Muitos testes de carga focam na utilização dos recursos do hardware do servidor. No entanto, as capacidades do cliente de teste também podem ser um gargalo que limita a capacidade de alcançar os objetivos do teste.
Aumentar a memória padrão pode ser feito facilmente com o seguinte
- set heap=-Xms4g -Xmx4g -xyz:MaxMetaspaceSize=256m
Caminhos do JMeter e Projeto
Queremos informar ao script batch onde encontrar o Apache JMeter e nosso Plano de Teste.
Configurar o caminho para a pasta bin do JMeter é simples
- set jmeterbin=C:\apache-jmeter-5.4.1\bin
E também a pasta do projeto (criada manualmente) onde o arquivo jmx (por exemplo, o Plano de Teste) residirá
- set projectdir=C:\JMeter Tests\sampleworldcities3
Para alguma extensibilidade, uma variável é criada para o nome do arquivo jmx separada da pasta do projeto (sem a extensão jmx e mesmo se utilizarem o mesmo nome)
- set testname=sampleworldcities3
Para maior conveniência, uma variável é criada que será adicionada a cada execução. Por vários motivos, um típico teste de carga pode ser executado várias vezes, cada uma com uma opção ligeiramente diferente habilitada dentro do Plano de Teste. Isso ajuda a acompanhar diferentes execuções do mesmo teste.
Execução do Teste e Switches
Graças à utilização das variáveis mencionadas acima, a execução do JMeter com um Plano de Teste passado como switch na linha de comando pode ser facilmente revisada em poucas linhas:
%jmeterbin%\jmeter -n -f -t "%projectdir%\%testname%.jmx" ^
-l "%projectdir%\results\results_%testname%_%runname%.jtl" ^
-j "%projectdir%\logs\debug_%testname%_%runname%.log" ^
-e -o "%projectdir%\reports\%testname%_%runname%" ^
- O switch -n executa JMeter no modo command-line
- O switch -t "path_to_jmx" informa ao JMeter onde no sistema de arquivos encontrar o arquivo jmx.
- O switch -l "path_to_jtl" informa ao JMeter onde registrar as amostras, este é o arquivo de resultados e o artefato mais importante da execução do teste.
- O switch -j "path_to_log" indica onde armazenar o log da execução do JMeter (por exemplo, informações dos ambientes). O switch -e diz ao JMeter para gerar um relatório do teste (dashboard) assim que o teste for concluído.
- O switch -o "path_to_report_folder" informa ao JMeter onde gerar o relatório (dashboard).
- O switch -f diz ao JMeter para forçar a exclusão dos arquivos existentes dos resultados e da pasta do relatório se estiverem presentes antes de iniciar o teste. Alterar a variável "runname" no script é a maneira mais fácil para garantir que um novo arquivo de resultados e relatório sejam criados em cada execução.
- O caractere caret ou ^ é um caractere "escape" adicionado ao script batch Windows para que o próximo caractere (nova linha) seja interpretado como um caractere comum. Isso ajuda na legibilidade.
Juntando Tudo
O script batch completo é como segue:
echo off
rem Execução Scriptada do Plano de Teste JMeter
rem Utilizando jmeter.bat para invocação
rem
rem 2021/06/07.1
rem
rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rem *** Variáveis ***
rem Definir memória JMeter min/máx para 4GB (ajuste baseado nos recursos do seu cliente)
set heap=-Xms4g -Xmx4g -xyz:MaxMetaspaceSize=256m
rem Localização %JAVA_HOME%\bin (atualmente não usado)
rem set javadir=C:\jdk-16.0.1\bin
rem Localização da bin Apache JMeter
set jmeterbin=C:\apache-jmeter-5.4.1\bin
rem Localização da pasta raiz do Plano de Teste JMeter (ex: pasta onde reside o Plano)
set projectdir=C:\JMeter Tests\sampleworldcities3
rem Nome do Plano de Teste JMeter (sem extensão JMX)
set testname=sampleworldcities3
rem String adicionada ao arquivo resultados em cada execução
set runname=run1
rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo on
rem *** Teste iniciado ***
%jmeterbin%\jmeter -n -f -t "%projectdir%\%testname%.jmx" ^
-l "%projectdir%\results\results_%testname%_%runname%.jtl" ^
-j "%projectdir%\logs\debug_%testname%_%runname%.log" ^
-e -o "%projectdir%\reports\%testname%_%runname%" ^
rem *** Teste concluído ***
echo off
Executando o Teste de Carga
Para as primeiras execuções do seu teste, recomenda-se executá-lo na janela de comando já aberta. Dessa forma, se houver problemas imediatos ao invocar qualquer comando no script batch, eles permanecerão na tela para serem corrigidos mais facilmente (por exemplo, um erro tipográfico).
- No Windows, você pode abrir uma janela Prompt de Comando clicando em Iniciar e digitando cmd.
- Quando essa janela aparecer, digite o caminho para seu script batch:
- "C:\JMeter Tests\sampleworldcities3\runMe.bat", pressione Enter
- O script rodará pela duração configurada e então retornará ao prompt de comando

Correr no modo command-line não fornecer ao console estatísticas em tempo real da execução do teste. Tal funcionalidade pode ser obtida, mas não é abordada neste Artigo.<\/P>
Artefatos de Teste<\/H1>Artefatos de teste são itens criados a partir do teste de carga que podem ser usados para análise. Itens como relatório e os arquivos JMeter Text Logs (JTL), que contêm os resultados brutos do teste, são tipicamente os mais importantes para reter. O log de execução também pode ser útil, pois sua listagem pode ser usada para confirmar a memória configurada do ambiente para a execução do teste, bem como atualizações sobre qual etapa estava sendo executada e quando. Após múltiplas execuções do mesmo teste, onde um nome de execução diferente no script foi usado, é fácil acabar com muitos arquivos jtl e pastas de relatório. É aqui que seguir a estratégia de teste utilizando uma pasta de projeto para gerenciamento é fundamental.<\/P>Nota: O relatório gerado pelo JMeter é baseado em HTML e JavaScript. Se alguns componentes do relatório estiverem em branco ou não parecerem renderizar, tente ajustar as configurações de segurança do navegador ou abra em outro navegador, se disponível.<\/STRONG><\/FONT><\/P>A página inicial e a seção Tempos de Resposta ao Longo do Tempo de um relatório gerado pelo JMeter<\/FONT><\/LI><\/UL>
<\/span><\/P>
<\/span><\/P>Para baixar o Plano de Teste Apache JMeter usado neste Artigo veja: <\/SPAN>sampleworldcities3.zip<\/A><\/P>Este teste requer o plugin Custom Thread Groups instalado no JMeter.<\/P>