Capturando a Utilização de Hardware Durante um Teste de Carga Apache JMeter
A taxa de transferência medida das transações e os tempos de resposta são dados críticos de qualquer teste de carga ArcGIS Enterprise, mas a utilização de hardware capturada das máquinas de implantação também fornece informações vitais. Juntos, esses artefatos de teste permitem a análise adequada das capacidades e eficiências do Site.
Determinar que um aplicativo ou serviço de recurso alcançou um determinado nível de taxa de transferência é bom, mas confirmar as características de escalabilidade enquanto também se examina a utilização do processador capturada da carga testada é ainda melhor.
Este Artigo discutirá várias maneiras de capturar a utilização do hardware da máquina. Esse uso de recursos é um ótimo complemento para os resultados de um teste de carga Apache JMeter do ArcGIS Enterprise e pode ajudar a aprofundar a análise. O Artigo focará nos cenários mais comuns usando ferramentas e utilitários gratuitos para Windows e Linux.
Estratégias de Captura
Infelizmente, não existe uma solução única para capturar a utilização do hardware em um teste de carga. Dada a possibilidade de uma multiplicidade de ambientes diferentes (Windows, Linux, Cloud, Kubernetes, Docker, etc...) ou falta dos acessos e permissões necessárias, pode haver casos em que você precisará alterar sua estratégia e metodologia para capturar e monitorar as informações de uso do seu hardware enquanto os testes Apache JMeter estão em execução.
Por exemplo, perfmon (por exemplo, Performance Monitor) é gratuito e incluído em toda instância do Microsoft Windows e pode funcionar muito bem quando todas as máquinas no ambiente estão no Windows. É a interface para várias tecnologias Windows (por exemplo, WMI, DCOM) e todas juntas oferecem uma estrutura versátil para monitorar a utilização do hardware em "tempo real" com gráficos ou scriptando uma captura de recurso para um arquivo de dados.
No entanto, perfmon não está disponível para Linux, então outra ferramenta (por exemplo, dstat) seria necessária para capturar as informações equivalentes. Claro, mesmo com uma configuração totalmente Windows, desafios ainda podem surgir com a abordagem perfmon, como em ambientes cloud restritivos. Mas existem outras maneiras de registrar esses dados valiosos da máquina? Exploraremos a resposta para essa pergunta mais adiante neste Artigo.
Que Informações o Teste de Carga Deve Capturar?
Quando trabalhos GIS como gerar uma imagem de mapa ou calcular uma solicitação do serviço Geoprocessing são enviados para uma implantação ArcGIS Enterprise, as máquinas servidoras que trabalham na resposta utilizarão vários recursos de hardware para completar o trabalho. Idealmente, a maior parte do trabalho acontece na unidade central de processamento (CPU), mas isso nem sempre é o caso.
Independentemente da tecnologia usada para monitorar e capturar o uso para seu teste de carga, existem quatro categorias principais de contadores de hardware que todas as máquinas servidoras possuem:
- Processador
- Memória
- Rede
- Disco
Cada categoria tem uma variedade de métricas que podem ser usadas para mostrar a utilização desse recurso. Não é necessário (ou recomendado) capturar todas as métricas disponíveis do processador durante um teste... apenas as vitais. Em outras palavras, aquelas necessárias para responder às perguntas típicas do teste de carga ou à história particular que você está buscando.
Tipicamente, algumas métricas importantes incluem as seguintes:
- Processador
- Memória
- Disponível (MB ou bytes)
- Usado (MB ou bytes)
- Percentual usado
- Rede
- Enviado (MB ou bytes)
- Recebido (MB ou bytes)
- Disco
- Percentual ocioso
- Tamanho da fila
- Leitura (MB ou bytes)
- Gravação (MB ou bytes)
Nota: Se seus servidores têm múltiplos discos, é altamente recomendável coletar dados em todos eles separadamente. Em outras palavras, trate o drive C, drive D e drive E como recursos diferentes ao capturar o uso. Tecnicamente é possível ter múltiplos dispositivos Network ativos, mas isso não é muito comum.
- A interface Performance Monitor coletando várias métricas de hardware que foram adicionadas manualmente (ao perfmon):

Nota: Algumas metodologias para capturar a utilização salvarão os valores em bytes, enquanto outras usarão megabytes. Ambos são aceitáveis, mas é importante entender qual está sendo capturado para análise e apresentação dos dados no relatório.
Nota: Juntamente com a taxa de transferência das transações (por exemplo, transações/segundo) e os tempos de resposta das transações (por exemplo, segundos), as métricas listadas acima compõem a maior parte dos Indicadores-Chave de Desempenho (KPIs) do teste de carga. KPI ajudam a avaliar e comparar o sucesso de um teste ou esforço específico contra metas definidas no teste (por exemplo, o Plano de Teste).
Intervalo de Amostragem
Tipicamente, um teste de carga (com foco principal na escalabilidade) não dura mais que uma ou duas horas. Como isso é considerado uma duração relativamente curta, faz sentido capturar a utilização do hardware com um intervalo rápido (por exemplo, frequência curta) entre 5 a 10 segundos. Isso ajuda a garantir que dados suficientes sejam obtidos para realizar uma análise completa. Se o intervalo da captura for 1 minuto ou mais longo, alguns impactos significativos nos recursos do hardware (provenientes do teste) podem ser perdidos.
Nota: Software de monitoramento pode já estar rodando na sua rede coletando periodicamente a utilização do hardware dos seus servidores ArcGIS Enterprise. Se relatórios gerados estiverem disponíveis, eles podem ser usados para análise do teste de carga desde que o intervalo da captura seja em frequência curta (por exemplo, 5 a 10 segundos). Para análise do teste de carga, você está interessado em bons detalhes métricos por algumas horas ao invés da cobertura ampla métrica por um dia inteiro.
A Diferença Entre Capturar e Monitorar
Os termos "capturar" e "monitorar" utilização do hardware são frequentemente usados como sinônimos. No entanto, para fins dos testes Apache JMeter, este Artigo foca em capturar o uso ao invés de monitorá-lo. A diferença chave aqui é que capturar significa que estamos registrando ou salvando as informações para facilitar a análise pós-teste.
Clientes de Teste (Máquinas Geradoras da Carga)
Ao capturar a utilização do hardware durante um teste contra ArcGIS Enterprise, é uma boa prática testar também medindo o uso das máquinas Cliente(s) do Teste.
Compreensivelmente, a maior parte do foco está em observar os recursos dos servidores, mas o hardware dos clientes pode ser um gargalo também. Se essas máquinas não tiverem capacidade suficiente (por exemplo processador, memória, rede ou disco), a capacidade para gerar carga contra sua implantação será impactada negativamente!
Entenda suas Linhas Base dos Servidores
Se você não está muito familiarizado com o hardware da sua implantação ArcGIS Enterprise, recomenda-se observar a utilização dos recursos enquanto o sistema está ocioso. Esse "uso" ajudará a formar uma imagem mental do melhor cenário possível. Em outras palavras, como está a máquina quando o software e serviços estão rodando mas ninguém está usando-a. Nesse cenário tal atividade dos recursos das quatro categorias principais deveria ser mínima.
Um teste de carga não precisa registrar essa informação do "estado ocioso", mas é bom estar ciente sobre como ele se apresenta.
Nota: Usar ferramentas como Gerenciador de Tarefas (para Windows) ou top (para Linux) são ótimas ferramentas para obter manualmente uma visão rápida da utilização dos recursos do sistema. Contudo, elas não são ideais para salvar o uso das quatro categorias em um arquivo.
- Visão do Gerenciador de Tarefas da utilização dos recursos do sistema (Windows):

- Visão top da utilização dos recursos do sistema (Linux):

Exemplos Comuns Para Captura da Utilização
Usando Perfmon (Para Capturar Utilização Fora do Teste de Carga)
Pretendendo que as permissões necessárias estejam disponíveis para sua conta usuário no Windows, perfmon é um dos as maneiras mais fáceis de registrar a utilização de hardware para análise de teste de carga. O Performance Monitor (e as tecnologias de suporte) pode capturar o uso da máquina local ou de vários servidores remotos, simultaneamente.<\/P>
Nota: Como lembrete, as métricas disponíveis para perfmon dentro de cada grupo de hardware são abundantes.<\/STRONG><\/FONT>
Também há uma grande quantidade de métricas de software que podem ser capturadas. Mas neste caso, menos é mais. Apenas um pequeno número de contadores é necessário para a maioria das situações.<\/STRONG><\/FONT><\/P>Como mencionado anteriormente, onde você pode encontrar considerações:<\/P>A implantação do ArcGIS Enterprise está rodando em Linuxperfmon não está disponível para LinuxA solução mais fácil é usar outra metodologia para coletar as informações (discutida mais adiante)<\/LI><\/UL><\/LI><\/UL><\/LI>A implantação está na nuvemExecutar erfmon na nuvem para coletar de outras máquinas da implantação (na nuvem) é tecnicamente possível, mas nos bastidores usa protocolos de rede que normalmente são bloqueados no ambienteA solução mais fácil aqui é executar perfmon manualmente em cada máquina na nuvem e coletar os resultados gerados quando o teste for concluído<\/LI><\/UL><\/LI><\/UL><\/LI><\/UL>Iniciar o perfmon no Windows é tão simples quanto executar:<\/P>Executar --> perfmon<\/LI><\/UL>A partir daí, você pode adicionar cada máquina, bem como cada respectiva métrica e contador de hardware. Embora isso seja muito poderoso, pode consumir tempo e ser potencialmente propenso a erros de digitação!<\/P>Em vez disso, a estratégia recomendada para essa metodologia é usar um script PowerShell onde todos esses itens estão pré-definidos.<\/P>O seguinte irá coletar métricas chave do perfmon (que já estão definidas) das quatro principais categorias de hardware e fará isso para quatro máquinas diferentes (que você pode especificar):<\/LI><\/UL> <\/P># ===============================================================================
# Atualizado: 2022-08-02
# Nome do arquivo: ps_get_all_continuous.ps1
# Versão: 0.1.0
# Descrição: Coletar continuamente várias métricas e salvar valores (binários) em um arquivo
# Notas: Recomenda-se iniciar a coleta das métricas 20 segundos antes do início do teste
# pois a inicialização dos contadores pode levar algum tempo
# ===============================================================================
Write-Output -InputObject 'Coletando todas as métricas (contínuo)...'
# Variáveis
# Contador(es) do Perfmon do Windows
$counters = "Processor(_Total)\% Processor Time","Memory\Available MBytes","Memory\Committed Bytes","Memory\% Committed Bytes In Use","Network Interface(*)\Bytes Received/sec","Network Interface(*)\Bytes Sent/sec","LogicalDisk(_Total)\% Idle Time","LogicalDisk(_Total)\Disk Read Bytes/sec","LogicalDisk(_Total)\Disk Write Bytes/sec"
# Máquinas para coletar
$computers = @('server1.domain.com','server2.domain.com','server3.domain.com','server4.domain.com')
# Tempo em segundos entre cada coleta de amostra
$sampleinterval = 10
$date = (Get-Date)
$dyndate = '{0:yyyyMMddTHHmmss}' -f $date # 20220303T140044
# Nome do arquivo
$filename = "perfmon_all_continuous"
# Tipo do arquivo de saída (opções são blg, csv ou tsv)
$outputfiletype = "blg"
# Arquivo de saída
$outputfile = '{0}_{1}.{2}' -f $filename, $dyndate, $outputfiletype
# Get-counter
Write-Output -InputObject ('Data e hora inicial: {0}' -f $date)
Get-counter -Computername $computers -Counter $counters -Continuous -Sampleinterval $sampleinterval | Export-counter -Force -FileFormat $outputfiletype -Path $outputfile <\/code><\/pre><P> <\/P><UL><LI>As métricas são coletadas a cada 10 segundos <U>até que você pressione Ctrl-C na janela do PowerShell<\/U>. As informações são salvas em um arquivo formatado binariamente que você pode abrir no Windows (para análise ou transformação adicional):<\/LI><\/UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_powershell_start_output.png" style="width: 999px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49356iC6B4C3B9199D2CF8\/capturehardware_powershell_start_output.png" role="button" title="capturehardware_powershell_start_output.png" alt="capturehardware_powershell_start_output.png" \/></span><\/P><P><STRONG><FONT color="#FF0000">Nota: Recomenda-se iniciar este script Powershell cerca de 20 ou 30 segundos <U>antes<\/U> de iniciar o teste de carga, pois a inicialização dos contadores não é imediata e leva um momento.<\/FONT><\/STRONG><\/P><UL><LI>Você pode abrir o arquivo *.blg a qualquer momento durante a captura, mas as informações mais recentes não são gravadas e salvas no arquivo até que você pressione Ctrl-C na janela do PowerShell onde o script está sendo executado.<\/LI><LI>Clicar duas vezes e abrir o arquivo *.blg deve parecer semelhante ao seguinte:<\/LI><\/UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_powershell_results.png" style="width: 965px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49377i9D7D47D522AD17A4\/capturehardware_powershell_results.png" role="button" title="capturehardware_powershell_results.png" alt="capturehardware_powershell_results.png" \/></span><\/P><P><SPAN>O resultado final é uma saída que se parece muito com o que capturamos. No entanto, neste caso, o processo foi automatizado (o que é uma coisa boa).<\/SPAN><\/P><P><SPAN>Desta interface no Performance Monitor, você pode selecionar/deselecionar métricas para isolamento específico, exportar o gráfico como imagem, salvar os dados brutos em outro formato como CSV ou realizar análise de uso de todas as máquinas coletadas. Muito poderoso!<\/SPAN><\/P><P><SPAN><FONT color="#FF0000"><STRONG>Nota: Scripts do Performance Monitor não se integram diretamente ao JMeter. <\/STRONG><\/FONT><\/SPAN><\/P><P><SPAN><FONT color="#FF0000"><STRONG>Nota: Para implantações na nuvem, talvez seja necessário executar o script perfmon manualmente em cada servidor respectivo.<\/STRONG><\/FONT><\/SPAN><\/P><H3 id="toc-hId--464400263">Usando dstat (Para Capturar Utilização Fora do Teste de Carga)<\/H3><P>dstat é uma ferramenta gratuita de linha de comando (escrita por dag@wieers.com) disponível para (ou com) a maioria das distribuições Linux que captura (e monitora) a utilização do hardware.<BR \/>Embora a utilidade não tenha sido atualizada por vários anos, ela é bastante robusta e fácil de scriptar.<\/P><UL><LI>Saída do terminal dstat executando sem opções:<\/LI><\/UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_dstat_monitor.png" style="width: 797px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49381i3426B23A73682927\/capturehardware_dstat_monitor.png" role="button" title="capturehardware_dstat_monitor.png" alt="capturehardware_dstat_monitor.png" \/></span><\/P><P>O seguinte será executado no seu servidor Linux e capturará o uso do hardware em um arquivo csv a cada 5 segundos <U>até que você pare manualmente com Ctrl-C<\/U>:<\/P><UL><LI>[gisadmin@pesrv04 ~]$ <STRONG>dstat -tTcmn --disk-util -d --nocolor --noheaders --output dstat_20220823.csv 5<\/STRONG></LI></UL ><P ><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_dstat_capture.png" style="width: 999px;"><img src="https:\/ \/us.v-cdn.net \/6038851 \/uploads \/images \/49383i12F99873FC093EA3 \/capturehardware_dstat_capture.png" role="button" title="capturehardware_dstat_capture.png" alt="capturehardware_dstat_capture.png" \/></span >< \/ P > < P >< FONT color="#FF0000">< STRONG > Nota : Com dstat , o uso capturado do processador é "percentual de tempo ocioso", < EM > não < / EM > percentual de uso . Para obter o percentual de uso , subtraia 100 do valor . No entanto , a utilização do disco está em percentual de uso . Além disso , a saída acima inclui um formato de apresentação para que os valores brutos (não mostrados) para memória , rede e disco sejam salvos como bytes . < / STRONG >< / FONT >< / P >< P >< FONT color="#FF0000">< STRONG > Nota : scripts dstat precisariam ser executados manualmente e separadamente em cada máquina Linux na implantação . Eles não se integram diretamente ao JMeter . Uma vez que um teste de carga seja concluído e os scripts parados , os arquivos CSV podem ser coletados e analisados (por exemplo , plotados ou gráficos em um programa de planilha) . < / STRONG >< / FONT >< / P >< H3 id="toc-hId-2023112570"> Usando Apache JMeter (Para Capturar Utilização Diretamente Do Teste De Carga)< / H3 >< P > Embora tenha alguns passos a mais (bem como seus próprios obstáculos) do que scripts perfmon e dstat , usar Apache JMeter para capturar utilização de hardware tem uma vantagem principal : < / P >< UL >< LI >< STRONG > Consistência < / STRONG > . O mesmo Plano De Teste JMeter pode ser usado para capturar as mesmas métricas de hardware do Windows e Linux (e Mac) < UL >< LI > Isso é realizado através de vários softwares gratuitos : < UL >< LI > A extensão <A href="https://jmeter-plugins.org/wiki/PerfMon/" target="_blank" rel="noopener nofollow noreferrer">jp@gc - PerfMon Metrics Collector</A> que é adicionada ao JMeter <BR />< UL >< LI > Este componente é usado para definir quais métricas coletar e de quais máquinas < / LI >< / UL >< / LI >< LI > A ferramenta <A href="https://github.com/undera/perfmon-agent/blob/master/README.md" target="_blank" rel="noopener nofollow noreferrer">PerfMon Server Agent</A> que roda em um Ambiente Java Runtime (JRE) em cada servidor da implantação < UL >< LI > Este componente faz a coleta real em cada servidor e envia os dados de volta ao JMeter < / LI >< / UL >< / LI >< / UL >< / LI >< / UL >< / LI >< / UL >< P > O componente jp@gc - PerfMon Metrics Collector pode ser facilmente adicionado ao Plano De Teste através do Gerenciador De Plugins JMeter (encontrado sob "PerfMon (Servers Performance Monitoring):< / P >< P >< span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_jmeter_pluginmanager.png" style="width: 999px;"><img src="https://us.v-cdn.net/6038851/uploads/images/49709i9536381D99067E93/capturehardware_jmeter_pluginmanager.png" role="button" title="capturehardware_jmeter_pluginmanager.png" alt="capturehardware_jmeter_pluginmanager.png" /></span >< / P >< P >< SPAN > O O componente PerfMon Server Agent é relativamente fácil de adicionar, mas requer alguns passos extras para funcionar corretamente.<\/SPAN><\/P><P><FONT color="#FF0000"><STRONG>Nota: Devido a um bug na biblioteca sigar-amd64-winnt, o ServerAgent <EM>crasha<\/EM> se você usar a biblioteca padrão com o JDK ou JRE superior à versão 8. A solução alternativa é corrigir a biblioteca ou usar uma versão atualizada do JRE 8.<\/STRONG><\/FONT><\/P><P><FONT color="#000000"><A href="https:\/\/www.openlogic.com\/openjdk-downloads" target="_self" rel="nofollow noopener noreferrer">OpenLogic<\/A> fornece versões gratuitas e periodicamente atualizadas do OpenJDK v8 (e JRE) para download para Windows, Linux e Mac. Embora o JDK funcione, o JRE é recomendado neste caso, pois é um pacote menor para baixar, mas ainda fornece o ambiente necessário para o agente rodar.<\/FONT><\/P><P><FONT color="#FF0000"><STRONG>Nota: Tanto o JRE 32bit quanto o 64bit funcionarão para o ServerAgent.<\/STRONG><\/FONT><\/P><P><FONT color="#FF0000"><STRONG>Nota: O OpenLogic JDK ou JRE também pode ser usado para executar o próprio Apache JMeter.<\/STRONG><\/FONT><\/P><P><FONT color="#000000"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_openlogic_download.png" style="width: 943px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49406iEBD98A1C9C85F57D\/capturehardware_openlogic_download.png" role="button" title="capturehardware_openlogic_download.png" alt="capturehardware_openlogic_download.png" \/><\/span><\/FONT><\/P><UL><LI><FONT color="#000000"><SPAN>O ServerAgent e o OpenLogic JRE descompactados na mesma pasta:<\/SPAN><\/FONT><\/LI><\/UL><P><FONT color="#000000"><FONT color="#000000"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_openlogic_serveragent_explorer.png" style="width: 942px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49499i1001834053E61544\/capturehardware_openlogic_serveragent_explorer.png" role="button" title="capturehardware_openlogic_serveragent_explorer.png" alt="capturehardware_openlogic_serveragent_explorer.png" \/><\/span><\/FONT><\/FONT><\/P><UL><LI> O OpenLogic JRE movido para dentro da pasta ServerAgent:<\/LI><\/UL><P><FONT color="#000000"><FONT color="#000000"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_openlogic_serveragent_jre.png" style="width: 943px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49500i9E7477A4EACB100A\/capturehardware_openlogic_serveragent_jre.png" role="button" title="capturehardware_openlogic_serveragent_jre.png" alt="capturehardware_openlogic_serveragent_jre.png" \/><\/span><\/FONT><\/FONT><\/P><UL><LI>Abra o arquivo startAgent.bat em um editor e atualize-o com o nome do diretório JRE que foi copiado para a pasta ServerAgent:<\/LI><\/UL><P> <\/P><pre class="lia-code-sample language-csharp"><code> off\n\nset JAVAPATH=.\\openlogic-openjdk-jre-8u342-b07-windows-64\\bin\n%JAVAPATH%\\java -jar %0\\..\\CMDRunner.jar --tool PerfMonAgent %*<\/code><\/pre><P> <\/P><UL><LI>Salve as alterações<\/LI><LI>A pasta C:\JMeterAgent\ServerAgent-2.2.3 agora contém um ServerAgent autônomo que pode ser copiado para as máquinas apropriadas para coletar a utilização de hardware delas<\/LI><LI>Para iniciar o agente no <STRONG>Windows<\/STRONG>, dê um duplo clique no startAgent.bat<UL><LI>O agente será iniciado em uma janela de comando:<\/LI><\/UL><\/LI><\/UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_serveragent_listening.png" style="width: 976px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49501iB7B6D67885E49A9C\capturehardware_serveragent_listening.png" role="button" title="capturehardware_serveragent_listening.png" alt="capturehardware_serveragent_listening.png" \/></span></P><UL><LI>O agente não começará a "coletar" métricas até ser instruído pelo Plano de Teste do Apache JMeter<BR \/><UL><LI>Por padrão, o agente e o JMeter se comunicam entre si nas portas TCP e UDP 4444<\/LI></UL></LI></UL><P><FONT color="#FF0000"><STRONG>Nota: O coletor de métricas jp@gc - PerfMon usa o nome "perfmon", mas <U>não<\/> utiliza realmente a tecnologia Windows Performance Monitor.<\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> </STRONG></FONT></P>
<H1 id="toc-hId--737670810">O Plano de Teste SampleWorldCities com Suporte à Coleta de Métricas</H1>
<UL>
<LI>Para baixar o Plano de Teste Apache JMeter usado neste Artigo, veja: <STRONG>
<A href="https://community.esri.com/ccqpr47374/attachments/ccqpr47374/implementing-arcgis-blog/355.14/1/sampleworldcities5.zip"
target="_self">sampleworldcities5.zip</A></STRONG> </LI>
<LI>A abertura do Plano de Teste no Apache JMeter deve ser semelhante ao seguinte:<UL class="lia-list-style-type-circle">
<LI>Ajuste as Variáveis Definidas pelo Usuário para se adequar ao seu ambiente<UL>
<LI>Este teste define quatro máquinas diferentes para coletar a utilização de hardware:<UL>
<LI>Um adaptador web<UL>
<LI>As requisições também são enviadas para este endpoint</LI>
</UL>
</LI>
<LI>Um ArcGIS Server</LI>
<LI>Um Portal for ArcGIS</LI>
<LI>O Cliente de Teste (a máquina que executa o JMeter)<UL>
<LI>O nome do host desta máquina é detectado automaticamente pelo JMeter quando o teste é executado</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
<P>
<span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="capturehardware_jmetertestplan_userdefinedvariables.png"
style="width: 999px;"><img
src="https://us.v-cdn.net/6038851/uploads/images/49509iFF0B49BC3452FB54/capturehardware_jmetertestplan_userdefinedvariables.png"
role="button"
title="capturehardware_jmetertestplan_userdefinedvariables.png"
alt="capturehardware_jmetertestplan_userdefinedvariables.png" /></span></P>
<H2 id="toc-hId-1878924742">Componentes do Plano de Teste</H2>
<P>A extensão jp@gc - PerfMon Metrics Collector é o único elemento de interesse aqui, pois este teste é praticamente idêntico aos Planos de Teste anteriores do Artigo para SampleWorldCities.</P>
<H3 id="toc-hId-200552998">Extensão jp@gc - PerfMon Metrics Collector</H3>
<P>Como mencionado anteriormente, a extensão é o que informa a cada agente em execução o que eles devem coletar. O Plano de Teste disponível neste Artigo já adicionou os contadores para cada uma das quatro categorias principais de hardware. </P>
<P><FONT color="#FF0000"><STRONG>Nota: Os parâmetros das métricas funcionarão para Linux e Mac. No entanto, as métricas Disks IO na extensão estão configuradas para coletar na unidade C (ex.: C:\) que não existe no Linux. Isso precisaria ser alterado para \/.</STRONG></FONT></P>
<P>
<span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="capturehardware_jmetertestplan_perfmonmetricscollector.png"
style="width: 999px;"><img
src="https://us.v-cdn.net/6038851/uploads/images/49510iD61C8B558F5AFD10/capturehardware_jmetertestplan_perfmonmetricscollector.png"
role="button"
title="capturehardware_jmetertestplan_perfmonmetricscollector.png"
alt="capturehardware_jmetertestplan_perfmonmetricscollector.png" /></span></P>
<H2 id="toc-hId--1735984184">Validar a Conectividade entre JMeter e ServerAgent</H2>
<P>Inicie o teste pela GUI clicando no botão play (triângulo verde)</P>
<UL>
<LI>Se todos os ServerAgents estiverem em execução e acessíveis em todas as máquinas pretendidas na implantação ArcGIS Enterprise, eles deverão conseguir coletar a utilização e enviar as informações de volta ao Plano de Teste</LI>
<LI>À medida que o JMeter recebe essas informações, ele exibirá os dados na aba Chart<UL>
<LI>Deixe coletar por alguns segundos para validar a conectividade e depois pare o teste</LI>
</UL></LI></UL>
<P>
<span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="capturehardware_jmetertestplan_validateconnectivity.png"
style="width: 999px;"><img
src="https://us.v-cdn.net/6038851/uploads/images/49512iACE9249861C62895/capturehardware_jmetertestplan_validateconnectivity.png"
role="button"
title="capturehardware_jmetertestplan_validateconnectivity.png"
alt="capturehardware_jmetertestplan_validateconnectivity.png" /></span></P>
<P><FONT color="#FF0000"><STRONG>Nota: Quando o teste é executado pela linha de comando, o nome do arquivo contendo os dados das métricas coletadas será baseado nas variáveis no script bat que definem o arquivo "results_". Uma vez que o teste tenha sido concluído, você pode usar este elemento "jp@gc - PerfMon Metrics Collector" para carregar os valores brutos e isolar contadores específicos ou gerar imagens dos gráficos. Este arquivo começará com a string "perfmon_". Os arquivos results e perfmon terminam com extensão *.jtl mas são apenas arquivos CSV.</STRONG></FONT></P>
<H1 id="toc-hId-622445930">Execução do Teste</H1>
<P>O teste de carga deve ser executado da mesma forma que um típico Plano de Teste do JMeter.</P>
<P>Veja o script runMe_withP.bat incluído no projeto sampleworldcities5.zip como exemplo de como executar um teste conforme recomendado pela equipe Apache JMeter. </P>
<UL>
<LI>O script runMe_withP.bat contém uma variável <EM>jmeterbin</EM> que precisará ser configurada com o valor apropriado para seu ambiente</LI>
<LI>Este script contém um pouco mais de lógica do que o runMe.bat encontrado em outros Artigos sobre Planos de Teste<UL>
<LI>Essa lógica extra foi adicionada para que o arquivo de resultados e o arquivo contendo os dados coletados terminem com o mesmo nome de execução</LI></UL></LI>
<LI>Conteúdo do script runMe_withP.bat:< / LI >echo off
rem Execu73o Scriptada do Plano de Teste JMeter
rem Utilizando ApacheJMeter.jar para invoca73o
rem
rem 2022/08/25.1
rem
r
rem Com vari1vel ambiente para suporte ao JMeter (para extens3o PerfMon)
r
rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
r
rem *** Vari1veis ***
r
rem Definir mem3ria do JMeter min/m1ximo em 4GB (ajuste conforme recursos do cliente do teste)
rset heap=-Xms4g -Xmx4g -xyz:MaxMetaspaceSize=256m
rem Localiza73o do %JAVA_HOME%\\bin
set javadir=%JAVA_HOME%\\bin
rem Localiza73o do bin Apache JMeter
set jmeterbin=C:\apache-jmeter-5.5\bin
rem Localização da pasta raiz do Plano de Teste JMeter (por exemplo, a pasta onde o Plano de Teste reside)
set projectdir=%~dp0
rem Nome do Plano de Teste JMeter (sem a extensão do arquivo JMX)
set testname=sampleworldcities5
rem String adicionada ao arquivo de resultados de cada execução de teste
set runname=testrun1
rem Configurações de Proxy
rem set proxyhost=http:\/\/localhost
rem set proxyport=8888
rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rem *** Ligue seus motores ***
color 20
rem Definir variável de ambiente para referência no teste (por exemplo, ${__P(env.run)})
set jvm_args="-Denv.runname=%testname%_%runname%"
echo on
rem *** Teste iniciado ***
%javadir%\java.exe --illegal-access=warn %jvm_args% %heap% -jar %jmeterbin%\ApacheJMeter.jar -Jjmeter.save.saveservice.autoflush=false -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 descomente conforme necessário
rem -H %proxyhost% -P %proxyport% ^
rem *** Teste concluído ***
echo off
color 40
ping localhost -n 5
color 07
Nota: É sempre recomendado coordenar o horário e a duração do início do teste de carga com o pessoal apropriado da sua organização. Isso garante impacto mínimo para os usuários e outros colegas que também possam precisar usar seu Site ArcGIS Enterprise local. Além disso, isso ajuda a prevenir ruído do sistema de outras atividades e usos que podem "poluir" os resultados do teste.
Nota: Por várias razões, é fortemente aconselhado nunca realizar teste de carga em serviços fornecidos pelo ArcGIS Online.
Guia Metodológico Geral
Este guia não pretende ser abrangente cobrindo todos os cenários de captura de utilização de hardware.
- Cenário #1
- Servidores
- Ambiente
- Máquina Coletora (Cliente de Teste)
- Descrição
- Capturando uso do Windows a partir do Windows
- Dificuldade
- Metodologia Recomendada
- Windows Perfmon (via script PowerShell)
- Cenário #2
- Servidores
- Ambiente
- Máquina Coletora (Cliente de Teste)
- Descrição
- Capturando uso Windows/Linux a partir do Windows
- Dificuldade
- Metodologia Recomendada
- JMeter Perfmon Extension e ServerAgent
- Cenário #3
- Servidores
- Ambiente
- Máquina Coletora (Cliente de Teste)
- Descrição
- Capturando uso Linux a partir do Windows/Linux
- Dificuldade
- Metodologia Recomendada
- Cenário #4
- Servidores
- Ambiente
- Máquina Coletora (Cliente de Teste)
- Descrição
- Capturando uso Windows/Linux a partir do Windows
- Dificuldade
- Metodologia Recomendada
- Cloud Watch/Azure Monitor (não abordado neste Artigo)
Cenário #5
- Servidores
- Ambiente
- Máquina Coletora (Cliente de Teste)
- Descrição
- Capturando uso Windows a partir do Windows
- Dificuldade
- Metodologia Recomendada
- Executar Windows Perfmon (via script PowerShell) em cada máquina na implantação
ul li strong cenário #6 ul li servidores ul li linux ul / ul ul li ambiente ul li kubernetes ul / ul ul li máquina coletora (cliente de teste) ul li windows ul / ul ul li descrição ul li capturando uso de contêiner/pod linux a partir do windows ul / ul ul li dificuldade ul li moderado/difícil ul / ul ul li metodologia recomendada ul li ambiente dashboard ou endpoint personalizado de recurso (não abordado neste artigo) ul / ul li / ul li / ul h1 id="toc-hId-1302504300" desafios comuns na coleta de utilização h1 p capturar utilização de hardware das máquinas da implantação para um teste de carga é uma prática recomendada, mas nem sempre é possível p p os desafios mais típicos são p ul li permissões ul li o mais comum li não ter acesso concedido ou capacidade para capturar uso em servidores remotos é o desafio mais comum li / ul li ambiente/localização ul li coletar utilização em máquinas na rede local é uma coisa, coletar uso em máquinas na nuvem é outra coisa li / ul li sistema operacional ul li às vezes o SO apresenta seus próprios *obstáculos* para capturar a utilização li / ul li técnico ul li certos ambientes (ex. kubernetes/docker) podem não ter as mesmas APIs para coletar o uso como uma máquina tradicional (física ou virtual) li / ul li / ul h1 id="toc-hId--504950163" considerações finais h1 p simplificando, existem muitas maneiras de capturar informações de utilização de hardware das máquinas em uma implantação ArcGIS Enterprise para analisar com seus resultados de teste de carga. Qual é a melhor maneira... qualquer forma que funcione melhor onde você possa rapidamente registrar as informações e usá-las para análise eficaz. p p embora nenhum artigo possa cobrir todas as situações, ambientes e cenários, este lista várias metodologias para capturar esses dados nos casos comuns. p p