Network Analyst Route
Simplificando, o solucionador de rotas do Network Analyst é usado para encontrar o caminho mais rápido para ir de um lugar a outro. Esse trajeto pode envolver apenas um local de início e fim, mas opcionalmente pode parar em vários locais, solicitando também que o solucionador gere direções passo a passo para cada rota na solução.
Nota: A funcionalidade de rota está disponível com uma licença do Network Analyst.
Teste de Carga de um Serviço de Rota do Network Analyst
O Network Analyst está repleto de muitas capacidades e recursos para resolução de rotas. Tais soluções podem ser executadas através do ArcGIS Pro, mas muitas vezes são consumidas por meio de um serviço ArcGIS. Como ele fornece tecnologia líder do setor para soluções de rotas, é lógico querer testar a carga do seu serviço solucionador (rota) em execução localmente para ver seu potencial de escalabilidade.
Existem vários tipos de análise fornecidos pela extensão Network Analyst; este Artigo usa rotas pois são muito fáceis de trabalhar... os únicos dados necessários são pelo menos dois pontos válidos de parada. Essa característica torna-o uma boa escolha para demonstrar como gerar dados e usá-los em um teste de carga contra um serviço de rota.
Nota: O passo a passo neste Artigo usou ArcGIS Pro 2.9 com serviços Network Analyst que rodaram em uma implantação ArcGIS Enterprise 10.9.
Como Testar um Serviço de Rota do Network Analyst?
Dados do Tutorial Network Analyst ArcGIS Pro
A compreensão dos processos neste Artigo é mais eficaz se os passos puderem ser seguidos usando os mesmos dados. Para tal tarefa, a equipe do Network Analyst disponibilizou um ótimo conjunto de dados.
Há um tutorial encontrado no arcgis.com chamado Network Analyst ArcGIS Pro Tutorial Data. Compactado, tem cerca de 132MB e consiste em dados do Network Analyst para várias cidades diferentes: San Diego, Paris e San Francisco. O Sistema de Coordenadas Geográficas é: WGS 1984 (WKID: 4326). Os dados são publicamente acessíveis.
Nota: Os exemplos neste Artigo focarão no conjunto de dados de San Diego.
- Visualização dos dados das ruas de San Diego no ArcGIS Pro (com Mapa Base Topográfico):

- As camadas Streets, Walking_Pathways ou Network Dataset (NewSanDiego_ND) não precisam estar habilitadas para utilizar as capacidades do Network Analyst
- No exemplo acima, elas estão habilitadas para servir como ponto de referência das ruas de San Diego
- Este Artigo não abrangerá os detalhes da criação, configuração ou publicação de um dataset de rede no ArcGIS Enterprise. Para informações sobre tais tarefas, veja:
Nota: Os exemplos do solucionador de rotas neste Artigo usam um serviço de mapa (com a capacidade de análise da rede) ao invés de um serviço geoprocessamento. O serviço de mapa usa execução síncrona.
Geração dos Dados para Teste
Este esforço de teste exigirá pontos válidos de parada para usar dentro do teste JMeter.
Como em outros Artigos JMeter na Comunidade, precisamos de bons dados para teste para obter o máximo valor dos resultados. E como antes, as Load Testing Tools facilitam muito esse trabalho. Há até uma ferramenta específica para criar dados de rota.
A versão 1.3.0 adiciona algumas melhorias interessantes à ferramenta "Generate Data (Solve Route)".
Disponibilizando as Ferramentas no ArcGIS Pro
Uma vez que o projeto load-testing-tools foi baixado para sua máquina, coloque a pasta descompactada em um diretório acessível ou tornado acessível pelo ArcGIS Pro. Se você já tem uma versão anterior das Load Testing Tools instalada, esta versão atualizada pode ser colocada ao lado dela (embora com nome diferente da pasta) ou substituir completamente a versão anterior.
Por exemplo:
- Coloque a pasta load-testing-tools em C:\Users\[username]\Documents\ArcGIS
- Use a Conexão Adicionar Pasta do Catálogo no ArcGIS Pro para listar o conteúdo deste diretório:

A ferramenta "Generate Data (Solve Route)" pode criar dados para teste a partir do serviço (mapa), uma cópia local dos dados ou os dados dentro de um geodatabase empresarial. Para este exemplo, qualquer dado em WGS 1984 (WKID: 4326) com uma área de interesse focada em torno de San Diego poderia ser usado.
Lançando a Ferramenta Generate Data (Solve Route)
- Lançar a ferramenta Generate Data (Solve Route) deve apresentar uma interface semelhante à seguinte:

- No seu formato mais simples, apenas o caminho do arquivo csv, que conterá os pontos parados, precisa ser especificado
- No entanto, enquanto queremos gerar pontos aleatórios para usar como paradas, gostaríamos de evitar criá-los nas baías, lagos ou oceano
- Aqui entra o parâmetro opcional Polígono Restritivo
- Este campo pode ser usado para referenciar uma camada de dados para limitar espacialmente onde os pontos são gerados
- Na verdade, ajustaremos todos os valores padrão
- Visualização do polígono (em rosa) delimitando a área de interesse dos dados das ruas de San Diego no ArcGIS Pro:

Nota: Este polígono foi criado manualmente e não está incluído no conjunto de dados San Diego
Nota: Do ponto de vista do teste, o polígono não precisa incluir todos os segmentos da camada streets
Entradas da Ferramenta Generate Data (Solve Route)
- Ajuste o Número de Testes para:
- Ajuste as Paradas por Teste para:
- Aponte o Polígono Restritivo para:
- Defina a Saída para um caminho onde os resultados serão gravados:
- C:\Users\[username]\Documents\ArcGIS\Projects\NetworkAnalystMap1\sandiegostops1.csv
- Clique em Executar para executar a ferramenta

- Analisando o arquivo CSV revelará os dados gerados de parada
Estes dados serão usados diretamente no teste Apache JMeter como entrada
Visualizar o arquivo em um editor de texto deve mostrar algo semelhante ao seguinte:

- As funcionalidades do solucionador de rotas são incrivelmente vastas e podem aceitar outros dados espaciais, por exemplo:
- Barreiras, Barreiras Polilinha e Barreiras Poligonais são outras entradas que podem ser passadas como parâmetro de solicitação
- A geração dessas outras entradas para solicitações do solucionador de rotas não será abordada neste Artigo
Visualizar Espacialmente os Pontos Gerados
Os pontos gerados que são usados para as paradas nas solicitações podem ser adicionados ao projeto ArcGIS Pro para visualizar espacialmente sua localização.
- No ArcGIS Pro, use o Catálogo para localizar e abrir o geodatabase de arquivo dentro do projeto
- Localize a classe de feição random_pts
- Adicione a classe de feição ao Mapa Atual:

O Plano de Teste do Solucionador de Rotas
- Para baixar o Plano de Teste Apache JMeter usado neste Artigo veja: route_solver1.zip
- Abrir o Plano de Teste no Apache JMeter deve parecer semelhante ao seguinte:
- Ajuste as Variáveis Definidas pelo Usuário para se adequar ao seu ambiente

Nota: A versão do Apache JMeter usada para este Artigo foi 5.4.3 (esta versão fornece atualizações críticas de segurança para Apache Log4j2). É fortemente recomendado que todas as implantações do Apache JMeter executem a versão mais recente.
Solicitação HTTP
O teste do solucionador de rotas é simples e bastante direto. Toda a lógica do teste pode ser encontrada dentro de um único objeto Solicitação HTTP do JMeter. Seguindo o estilo de teste usado em Artigos anteriores, este item de solicitação está colocado dentro de um Controlador de Transação.

Os pares chave/valor para a solicitação neste teste JMeter são baseados em dois fatores:
- A funcionalidade disponível no serviço Network Analyst publicado (e dados subjacentes)
- Os valores neste teste foram retirados diretamente dos padrões usados no endpoint REST do serviço San Diego publicado, por exemplo:
- A versão do ArcGIS Enterprise (ArcGIS Server)
- Algumas versões adicionam novas capacidades
- Este teste é baseado no serviço publicado a partir do conjunto de dados San Diego e ArcGIS Enterprise 10.9
Diferentes conjuntos de dados da rede podem ter diferentes opções de parâmetros de solicitação disponíveis ou populados, por padrão. Alguns parâmetros, se habilitados (como returnDirections), indicarão ao solucionador para retornar mais informações. Isso, por sua vez, solicita que o serviço faça mais trabalho, o que aumentará o tempo de resposta da solicitação.
Nota: A visualização da Solicitação HTTP a partir do Índice (lado esquerdo do Plano de Teste) aparecerá como uma mistura de variáveis JMeter e strings. Isso é intencional. Esses valores serão preenchidos na reprodução (no objeto Visualizar Árvore de Resultados e no arquivo bruto dos resultados).
A Configuração do Grupo de Threads
O Plano de Teste JMeter está configurado para um teste de carga de 20 minutos. Com este exemplo usando duas paradas para cada solicitação de rota, o solucionador deve ter um bom desempenho e retornar uma boa quantidade de amostras (por exemplo, respostas do servidor) para cada etapa.
- Diferentes ambientes e dados podem exigir uma configuração alternativa para alcançar os resultados desejados, ajuste as configurações das threads conforme necessário

Validando o Plano de Teste
Como boa prática, é sempre uma boa ideia validar os resultados retornados dentro da interface gráfica do JMeter antes de executar o teste real de carga pela linha de comando.
- Use o ouvinte Visualizar Árvore de Resultados para ajudar na validação
- O Plano de Teste deste Artigo inclui um Ouvinte Visualizar Árvore de Resultados mas ele está desabilitado
- Habilite-o para visualizar os resultados quando o teste for executado pela GUI
- Pela GUI, inicie o teste
- Deixe o teste rodar por cerca de 20 segundos
Transações
- Selecione uma das Transações "Route"
- A seção Visualizar Árvore de Resultados deve se assemelhar ao seguinte:

- Neste exemplo, todas as transações foram concluídas com sucesso
- Às vezes, ao parar a reprodução, as últimas Transações na Visualizar Árvore de Resultados podem falhar pois foram interrompidas "no meio da solicitação"; isso pode ser ignorado com segurança
Solicitações
- Expanda uma das Transações "Route"
- Selecione a solicitação HTTPS dentro dela
- Os resultados devem se parecer com o seguinte:

- Neste exemplo, a solicitação selecionada foi concluída com sucesso (como indicado pela marca verde)
- O sucesso da Transação pai já indicava esse status
- No separador resultado do Sampler, dê uma olhada rápida no campo Tamanho em bytes
- Neste exemplo, o Tamanho da Solicitação foi cerca de 15KB, o que geralmente significa que bons dados geométricos foram retornados; em outras palavras, as respostas não estavam "vazias", sendo mais uma prova que foi bem-sucedido
- Examine a URL da solicitação
- Como mencionado anteriormente, este valor da URL da solicitação é preenchido em tempo real
- Clique na aba Dados da Resposta e na subaba Corpo da Resposta
- Isto mostra uma visão textual dos dados retornados pela solicitação:

Nota: As geometrias das rotas retornados são comumente renderizados em aplicações JavaScript baseadas em navegador web. Embora o Apache JMeter seja um cliente (de teste), ele não renderiza espacialmente essas respostas de geometria do servidor dessa forma.<\/STRONG><\/FONT><\/P>Execução do Teste<\/H1>O teste de carga deve ser executado da mesma maneira que um Plano de Teste típico do JMeter.<\/P>Veja o script runMe.bat incluído no projeto route_solver1.zip para um exemplo de como executar um teste conforme recomendado pela equipe do Apache JMeter. <\/P>O script runMe.bat contém uma variável jmeterbin<\/EM> <\/SPAN>que precisará ser configurada com o valor apropriado para seu ambiente<\/LI>Se o serviço de rota Network Analyst foi publicado como dedicado, <\/FONT>ajuste as instâncias mínimas e máximas adequadamente antes de executar o teste de carga<\/FONT>
Para mais informações veja: Configurar configurações de instância do serviço<\/A> <\/STRONG><\/FONT><\/LI><\/UL><\/LI>O serviço de rota publicado usado neste Artigo foi dedicado com as instâncias máximas definidas para 4- O componente ArcGIS Server estava rodando em um sistema com 4 núcleos de CPU<\/LI><\/UL><\/LI><\/UL>
Nota: É sempre recomendado<\/U><\/EM> 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 aos 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<\/EM> de outras atividades e usos que podem "poluir" os resultados do teste.<\/STRONG><\/FONT><\/P>Nota: Por várias razões, é fortemente aconselhado nunca realizar teste de carga no ArcGIS Online<\/EM><\/U>.<\/STRONG><\/FONT><\/P>
Relatório JMeter<\/H1>Curva de Throughput<\/H2>O Relatório JMeter auto-gerado pode fornecer insights sobre o throughput do serviço de rota sob cargaComo cada Transação de Rota continha uma solicitação, ambas as métricas (solicitação e transação) mostraram virtualmente o mesmo valor; isso é esperado dado o design do teste<\/LI><\/UL><\/LI>Neste caso, o pico de throughput para as resoluções de rota com duas paradas foi cerca de 15 transações por segundoDado o ambiente testado, isso equivale a cerca de 54.000 resoluções de rota por hora <\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>Curvas de Desempenho<\/H2>O Relatório JMeter auto-gerado também pode fornecer insights sobre o desempenho do serviço de rota sob cargaComo cada Transação de Rota continha uma solicitação, ambas as métricas (solicitação e transação) mostraram virtualmente o mesmo valor; isso é esperado dado o design do teste<\/LI><\/UL><\/LI>O desempenho das solicitações de rota foi bom e ficou abaixo de 1 segundo durante todo o teste de cargaOnde o throughput atingiu seu pico pela primeira vez em 15 transações por segundo é onde o tempo de resposta foi medidoNesse ponto do teste, o tempo médio de resposta foi cerca de 333 ms ou 0,33 segundos<\/LI><\/UL><\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>Pode também ser útil ver os tempos de resposta plotados em relação à carga escalonada (threads configuradas)Gráficos anteriores mostraram valores em relação ao tempo<\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>Considerações Finais<\/H1>O Plano de Teste Apache JMeter neste Artigo representa uma abordagem programática para aplicar carga a um serviço de rota Network Analyst. Uma das forças deste teste é que ele é fácil de configurar e manter.<\/P>O relatório auto-gerado do JMeter fornece gráficos e resumos que podem ser usados para analisar rapidamente o desempenho e a escalabilidade do serviço de rota.<\/P>Para baixar o Plano de Teste Apache JMeter usado neste Artigo veja: route_solver1.zip<\/<A> <\/<STRONG> <\/<LI>Para baixar o conjunto de dados San Diego usado neste Artigo veja: Dados do Tutorial Network Analyst ArcGIS Pro<\/<A> <\/<STRONG> <\/<LI> <\/<UL> <\/<P> <\/<P> <\/<P> <\/<P> Apache JMeter<\/<A> lançado sob a Apache<\/<A> Licença 2.0.<\/<A> Apache, Apache JMeter, JMeter, a pena Apache e o logotipo Apache JMeter são marcas registradas da Apache Software Foundation.<\/