Análise de Escalabilidade de Subrede
O que é Análise de Escalabilidade de Subrede?
Antes de falar sobre a anlise de escalabilidade de subrede da Utility Network, vamos revisar as definiinies do que e uma subrede e o que e anlise de escalabilidade:
Uma subrede:
Em uma utility network, uma subrede e uma partição ou subconjunto topolgico dos dados em um tier onde todas as features participantes tam conectividade com os mesmos controladores. Uma subrede e frequentemente usada para rastreamento para determinar se a conectividade est1 dispondvel.
Análise de escalabilidade:
Análise de escalabilidade serve para determinar a capacidade de uma implantao da Utility Network para executar maltiplas solicitaões simultaneamente (por exemplo, updateSubnetwork e exportSubnetwork). Isso normalmente e feito para entender se os objetivos comerciais dominantes por tempo podem ser atendidos. Por exemplo, uma implantaão particular pode exportar 5.000 subredes dentro de uma janela de 4 horas?
A resposta a essa pergunta e desconhecida at9 ser testada e verificada.
A escalabilidade de uma implantaão est1 ligada a quanto concorrancia pode ocorrer ao mesmo tempo enquanto mant9m desempenho ptimo das operaões de interesse. Este Artigo discute como aplicar concorrancia atrav9s de um teste (includdo no Artigo).
Nota: Para mais informaões sobre uma subrede, veja: O Ciclo de Vida da Subrede na Utility Network
Nosso Objetivo e Meta na Utility Network
- Automatizar as tarefas de atualizar ou exportar uma lista de subredes
- Capturar o tempo de desempenho
- Tarefa geral
- Operaões individuais (por exemplo, tempo para atualizar uma subrede especdfica)
- Soluão configurável para atender aos requisitos
- Sensível ao tempo
- Sensível a recursos
Por que Realizar Análise de Atualização/Exportação de Subrede?
- Propósito típico e restrições de tempo s3o um requisito comercial
- Exercitar duas funçõess por subrede
- Atualizar (updateSubnetwork )
- Comumente realizado após edição e validação da topologia da rede ou habilitação da topologia da rede ter sido realizada
- Exportar (exportSubnetwork)
- Usado para extrair informações sobre a subrede para um arquivo que pode ser usado por sistemas externos como gerenciamento de interrupções
- Antes que uma subrede possa ser exportada do sistema, ela precisa estar atualizada (atualizada)
P class="lia-indent-padding-left-90px" style="padding-left : 90px;">
Tanto são funções importantes da utility network. Como administrador ou desenvolvedor GIS, é importante entender como essas operações escalam. Entender o tempo para processar uma lista de subredes é a análise principal. P class="lia-indent-padding-left-90px" style="padding-left : 90px;">
Isto pode ser levado adiante explorando soluções que otimizem a tarefa para tempo ou recursos do sistema. Esses desafios têm abordagens semelhantes sobre como realizar a tarefa de atualizar ou exportar muitas subredes. Obter insights sobre objetivos comerciaisA exportação das Subredes pode levar mais tempo computacional dependendo das opções utilizadasTais opções podem ser um requisito comercialDesempenho e escalabilidade podem afetar a arquiteturaA partir dos resultados e descobertas do testeA configuração da implantação pode precisar mudar para atender às necessidades comerciais
Como Realizar Análise de Escalabilidade de Subrede?Lista de SubredesO primeiro passo é extrair uma lista de subredes do conjunto de dados da Utility Network.Isto pode ser feito através de vários métodos:ArcGIS ProScript ArcPyInstruções SQL selectExemplo SQL:Conectar ao geodatabase da Utility Network Encontrar o ObjectId para a tabela Subnetwork:Este ObjectId é dinâmico e pode variarTipo GUID é constante-- Encontrar ObjectId da Utility Network para tabela Subnetwork
SELECT OBJECTID FROM sde.GDB_ITEMS WHERE type='{37672BD2-B9F3-48C1-89B5-8C43BBBB6D57}'/prePara nosso banco de dados exemplo, retornou 446/liEste valor ObjectId será usado na próxima consulta/li/ul/liExportar a lista das subredes/li/ul/preclass="lia-code-sample language-sql">-- Exportar lista das Subnetworks
SELECT
T1.SUBNETWORKCONTROLLERNAME, T1.SUBNETWORKNAME, T1.ISDIRTY,
T1.ISDELETED, T1.TIERNAME, T1.DOMAINNETWORKNAME, T1.GDB_FROM_DATE
FROM
elec.UN_446_SUBNETWORKS T1
INNER JOIN (SELECT SUBNETWORKNAME, MAX(GDB_FROM_DATE) AS MaxDate
FROM
elec.UN_446_SUBNETWORKS
GROUP BY SUBNETWORKNAME) T2
ON T1.SUBNETWORKNAME = T2.SUBNETWORKNAME
AND T1.GDB_FROM_DATE = T2.MaxDate/preSalvar saída em um arquivo (csv ou tsv)/liAlguns SubnetworkControllerNames podem conter vírgulas (por exemplo, ",") e um arquivo separado por tabulação em vez de separado por vírgula seria mais apropriado/li/ul/li/ulpPara o conjunto de dados Utility Network usado neste Artigo, a lista resultante das subredes se parece com o seguinte quando as linhas dos dados são separadas por tabulações./p
/pNota: E suposto que o estado atual da rede contenha subredes limpas e sujas. Como as subredes ficam sujas est fora do escopo deste Artigo./p
Nota: Podem haver vários fatores comerciais que influenciam na seleção para extrair subredes. Esta consulta é para ajudar você a começar./p
Apache JMeter/h3Como mencionado em outros Artigos da Comunidade, Apache JMeter e uma ferramenta gratuita para testes. Ela e ótima para exercitar o endpoint REST do ArcGIS Enterprise para testar muitas funçõess:/p Teste de Desempenho com Apache JMeter (Uma Introdução) < A href= "https://community.esri.com/t5/implementing-arcgis-blog/running-an-apache-jmeter-load-test-from-command-line-mode/ba-p/1065720" target= "_self" > Executando um Teste de Carga Apache JMeter pelo modo linha-de-comando (Iniciante / Intermediário) < A href= "https://community.esri.com/t5/implementing-arcgis-blog/creating-a-load-test-in-apache-jmeter-against-the/ba-p/1063905" target= "_self" > Criando um Teste de Carga no Apache JMeter contra o Serviço SampleWorldCities Map (Iniciante / Intermediário) < A href= "https://community.esri.com/t5/implementing-arcgis-blog/using-apache-jmeter-to-load-test-an-arcgis-enterprise/ba-p/1067758" target= "_self" > Usando Apache JMeter para Testar Carga em um Serviço Autenticado ArcGIS Enterprise (Intermediário / Avançado) Embora existam muitas ferramentas de teste disponíveis, o JMeter será usado para chamar um serviço Utility Network no ArcGIS Enterprise para fazer solicitações updateSubnetwork e exportSubnetwork.< Span >Conjunto de Dados Utility Network -- Naperville Electric </ Span ></ h3 >< p >Dados Naperville Electric, conforme visto no ArcGIS Pro:</ p >< p >< span class = "lia-inline-image-display-wrapper lia-image-align-inline" image-alt = "AaronLopez_0-1770168353750.jpg" style = "width: 999px;" >< img src = "https://us.v-cdn.net/6038851/uploads/images/147840i8150D018DA9ABE50/AaronLopez_0-1770168353750.jpg" role = "button" title = "AaronLopez_0-1770168353750.jpg" alt = "AaronLopez_0-1770168353750.jpg" / ></ span ></ p >< h1 id = "toc-hId-1443836417" >< Span class = "" >Atualizar Subrede </ Span ></ h1 >< p >< Span class = "" >Apache JMeter – Visão do sistema de arquivos da pasta Plano de Teste </ Span ></ p >< p >< span class = "lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AaronLopez_1-1770168462393.jpg" style="width: 999px;">
<\/span><\/P>Fora do JMeter, o Plano de Teste é apenas um arquivo jmx, por si só. Como mencionado em outros Artigos da Comunidade, é recomendado criar alguma estrutura de pastas para o projeto com o qual você trabalha. Isso pode ajudar na gestão, especialmente se você tiver muitos testes diferentes fazendo coisas diferentes. Nas pastas mostradas acima, a lista de sub-redes e os resultados dos testes podem ser mantidos dentro do diretório UpdateSubnetwork, onde é menos provável que sejam confundidos com outros dados de execução de teste.<\/P>O Plano de Teste Update Subnetwork<\/H2>Para baixar o Plano de Teste Apache JMeter usado neste Artigo veja: UpdateSubnetwork1.zip<\/A><\/STRONG> <\/LI>Abertura do Plano de Teste no Apache JMeter deve parecer semelhante ao seguinte:<\/SPAN>Ajuste as Variáveis Definidas pelo Usuário para se adequar ao seu ambiente<\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>
Componentes Chave do Plano de Teste<\/H2>Com o Plano de Teste UpdateSubnetwork expandido, os seguintes elementos podem ser vistos:<\/P>Variáveis Definidas pelo UsuárioLista acima, usada para adaptar facilmente o teste a um ambiente<\/LI><\/UL><\/LI>Relatório AgregadoUsado para depuração do teste e análise pós-teste<\/LI><\/UL><\/LI>Grupo de ThreadsDefine a concorrência das threads ou escalabilidade<\/STRONG><\/U> do teste<\/LI>Recomendado usar valores padrão (ex., 1 thread de teste) enquanto constrói um teste<\/LI><\/UL><\/LI>GenerateTokenObtém um token do ArcGIS EnterpriseUsa credenciais definidas anteriormente<\/LI><\/UL>Mantém o token durante o teste<\/LI><\/UL><\/LI>While Controller SyncUsado quando a lógica de negócio determina que as chamadas devem ser síncronas<\/STRONG><\/LI>Loop sobre a lista de sub-redes<\/LI><\/UL><\/LI>Configuração CSV Data SetVincula a lista de sub-redes ao testeArquivo texto CSV ou TSV<\/LI><\/UL><\/LI><\/UL><\/LI>If ControllerUm ramo lógico do teste usando Groovy<\/LI>Siga o ramo se a sub-rede estiver suja (IsDirty=True ou IsDirty=1)<\/LI><\/UL><\/LI>USN Request (${SUBNETWORKNAME})O elemento de teste que emite a requisição para realizar a maior parte do trabalho<\/LI>A partir da fonte do arquivo de dados, ${SUBNETWORKNAME} é preenchido com o nome da sub-rede<\/LI><\/UL><\/LI>While Controller AsyncUsado quando a lógica de negócio determina que as chamadas devem ser assíncronas<\/STRONG>Ideal para requisições updateSubnetwork muito longas<\/LI><\/UL><\/LI>Loop sobre a lista de sub-redes<\/LI>Para utilizar:Clique com o botão direito no While Controller Async e selecione Ativar<\/STRONG>Clique com o botão direito no While Controller Sync e selecione Desativar<\/STRONG>
<\/span>Nota: Defina os valores do Grupo de Threads para determinar o perfil de escalabilidade do teste Update Subnetwork. Um valor maior para "Usuários" significa uma maior concorrência máxima que o teste alcançará. Aumente "Rampup" para aumentar gradualmente a quantidade de concorrência durante esse período (em segundos).<\/STRONG>Um Olhar Mais Próximo no GenerateToken<\/H2>A requisição GenerateToken é uma parte importante do teste. Ela ocorre no início do teste e o serviço Utility Network provavelmente exigirá autenticação.<\/P>A Requisição Generate Token<\/H3>
<\/span>Capturando o Token<\/H3>Solicitar o token é metade do trabalho. A outra parte é capturá-lo e armazená-lo como uma variável para que o JMeter possa acessar enquanto o teste está em execução. Isso é feito com o elemento Regular Expression Extractor do JMeter.<\/SPAN>
<\/span>Nota: Como expressões regulares funcionam está além do escopo deste Artigo, mas essencialmente elas procuram uma assinatura específica na resposta e, se encontrada, colocam-na em uma variável JMeter chamada agstoken.<\/SPAN>Arquivo de Dados do Plano de Teste Update Subnetwork -- A Lista de Sub-redes<\/H2>O elemento CSV Data Set Config desempenha um papel enorme pois ele Tie nossa lista de dados das sub-redes ao teste.<\/SPAN>
< /span ></ P >< P >< FONT color = "#FF0000 " >< STRONG > Nota: Alguns conjuntos de dados Utility Network podem conter o caractere vírgula < /EM > (ex., ",") no SubnetworkControllerName. Onde isso ocorre, é vantajoso salvar a lista das sub-redes como valores separados por tabulação em vez de valores separados por vírgula.< /STRONG >< /FONT > < /SPAN >< / P >< P >< FONT color = "#FF0000 " >< STRONG > Nota: Nos casos em que um arquivo separado por tabulação é usado, o JMeter ainda esperará que a linha cabeçalho na lista das sub-redes seja separada por vírgulas.< /STRONG >< /FONT >< / P >< H2 id = "toc-hId-1553375444 " > Lógica If Controller < /H2 >< P > Para conveniência, foi adicionada lógica ao teste para atualizar apenas as sub-redes da lista se o campo IsDirty for igual a 1.
Groovy é usado para realizar essa tarefa no teste.< /SPAN >< / P >< P > Apache Groovy é uma linguagem script baseada em Java que fornece funções poderosas e suporte programático para coisas que podem ser difíceis para os elementos padrão do teste JMeter.< /SPAN >< /SPAN >< / P >< P >
< /span >< / P >< H2 id = "toc-hId--254079019 " > A Requisição HTTP Update Subnetwork < /H2 >< P > Este elemento do teste no Plano de Teste é responsável pelas chamadas web < /SPAN >updateSubnetwork < /SPAN > no teste.< /SPAN > < /SPAN >< / P >< P >Este componente emite a requisição e o JMeter avalia a resposta recebida do ArcGIS Enterprise através do endpoint REST.< /SPAN >< / P >< P >
< /span >< / P >< H2 id = "toc-hId--2061533482 " > Execução do Teste < /H2 >< P > Execução pela Interface Gráfica (GUI) < /SPAN >< / P >< UL >< LI > Ideal para autoria e depuração do teste < /SPAN ></ LI >< LI > Botões Play e Stop < /SPAN ></ LI ></ UL >< P >
< /span > < /P >< P >
< /span >< /P >< P > Execução via linha de comando < /SPAN ></ P >< UL >< LI > Ótimo para execuções oficiais dos testes < /SPAN >< UL >< LI > Utilização mais eficiente da memória < /SPAN >< UL >< LI > Especialmente se ouvintes como Relatório Agregado estiverem desativados durante a execução < /SPAN ></ LI ></ UL ></ LI ></ UL ></ LI >< LI > Play (consoleRun.bat) e Stop (Control-C) < /SPAN >< UL >< LI > Quando o teste é executado via consoleRun.bat, um arquivo results.jtl será gerado na pasta results < /SPAN > < UL > < LI > < SPAN > Este é o arquivo de resultados e contém informações valiosas de desempenho sobre operações do teste
Nota: É sempre recomendado coordenar o horário de início e a duração do load test 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 on-premise ArcGIS Enterprise Site. Além disso, isso ajuda a prevenir system noise de outras atividades e usos que podem "poluir" os resultados do teste.Nota: Por várias razões, é fortemente aconselhado nunca realizar load test em serviços fornecidos pelo ArcGIS Online.Análise -- Relatórios e Avaliação
Elemento Aggregate Report (Depuração de Teste)
Desta análise, podemos ver facilmente a transação UpdateSubnetwork_Sync e algumas estatísticas chave que nos dizem informações importantes de desempenho sobre a operação como um todo.

Para uma estimativa aproximada do tempo total, ao usar 1 thread de teste de concorrência, basta multiplicar o número de amostras pela média. Por exemplo: "# Samples * Average" = Tempo Total da Execução do Teste (ms)
Para execuções "oficiais" de teste, é recomendado desabilitar o listener Aggregate Report da Árvore (um simples clique direito e depois selecionar Disable) e usá-lo apenas para autoria de teste, depuração e processamento pós-teste.
Nota: Para processamento pós-teste, o Aggregate Report ainda pode ser usado para navegar, selecionar e carregar um arquivo de resultados de teste mesmo se estiver desabilitado na GUI.
O Arquivo de Resultados
Quando executado a partir do script de linha de comando, o JMeter produzirá um arquivo de resultados como parte da sua saída. O arquivo de resultados (*.jtl), contém informações brutas das requisições em formato texto.
O conteúdo deste arquivo contém uma listagem de todas as subnetworks e seus tempos individuais de resposta. Embora seja fácil abrir e visualizar com qualquer editor comum, realizar análises neste formato não é recomendado.

Elemento Aggregate Report (Análise Pós-Teste)
Vamos voltar ao elemento Aggregate Report para alguma análise pós-teste. Na GUI do JMeter, clique no botão Browse para encontrar o arquivo jtl de resultados e então selecione Open para carregá-lo.
Uma vez carregado, o arquivo jtl é processado pelo JMeter e um relatório estatístico é gerado na seção Aggregate Report.
O elemento Aggregate Report é interativo, então você pode clicar no cabeçalho Maximum para facilmente reordenar a listagem e encontrar subnetworks que estavam levando mais tempo. A transação UpdateSubnetwork_Sync ainda está listada, o que é crítico para entender se os números gerais estão atendendo certos requisitos de desempenho definidos em um acordo de nível de serviço (SLA).

Nota: O número de subnetworks neste conjunto de dados é pequeno. Resultados de testes com conjuntos de dados em produção teriam mais amostras.
Aprofundando a Análise
Como o arquivo de resultados é separado por vírgulas, ele pode ser facilmente aberto em uma planilha.

Uma visão dos dados do resultado com alguma formatação mínima.
Isto é bom, mas pode ser melhor?

Criar gráficos do desempenho da transação oferece maior clareza.
Nota: Se você quer apenas os números gerais, filtre as requisições individuais das subnetworks (por exemplo, o campo onde responseMessage = OK).
Exportar Subnetwork
Apache JMeter – Visualização do sistema de arquivos da pasta Test Plan

O Plano de Teste Export Subnetwork
- Para baixar o Apache JMeter Test Plan usado neste Artigo veja: ExportSubnetwork1.zip
- Abrir o Test Plan no Apache JMeter deve parecer similar ao seguinte:
- Ajuste as Variáveis Definidas pelo Usuário para se adequar ao seu ambiente

Nota: Defina os valores do Thread Group para determinar o perfil de escalabilidade do teste Export Subnetwork. Um valor maior para "Users" significa uma maior concorrência máxima que o teste alcançará. Aumente "Rampup" para aumentar gradualmente a quantidade de concorrência durante essa duração (em segundos) até atingir o máximo.
A Requisição HTTP Export Subnetwork
Este elemento do teste no Test Plan é responsável pelas chamadas web exportSubnetwork no teste.
Este componente envia a requisição e o JMeter avalia a resposta vinda do ArcGIS Enterprise através do endpoint REST.

Nota: Este Plano de Teste Export Subnetwork foi projetado para exportar cada subnetwork no arquivo de dados.
JMeter Avançado
Obtendo o Tamanho da Saída Export Subnetwork
A requisição exportSubnetwork produz um arquivo no ArcGIS Server. Este arquivo de saída (que normalmente é formatado como json ou pbf) pode então ser importado em outros sistemas. O tamanho em disco deste item pode variar mas é uma metadada útil do teste para capturar.
Embora fazer com que o elemento Request leia diretamente a saída para obter o tamanho possa ser simples, seria muito ineficiente. No entanto, esta tarefa é uma oportunidade para utilizar a linguagem Groovy mencionada anteriormente e realizar alguns cálculos mais pesados no sistema de arquivos rapidamente.
Após a requisição exportSubnetwork, há requisições adicionais na forma de dois Samplers JSR223:
- CalculateStatistics SN:${SUBNETWORKNAME}
- SN:${SUBNETWORKNAME} Size:${outputFileSizeKB}KB
A primeira amostra contém lógica Groovy para ler o arquivo de saída da exportação e colocá-lo em uma variável do JMeter.
< P >< span class = "lia-inline-image-display-wrapper lia-image-align-inline " image - alt = " AaronLopez_1 - 1770329982691 .png " style = " width : 999 px ; " > < img src = "
https://us.v-cdn.net /6038851/uploads/images/148012i5D09BC0A9F25CF88/AaronLopez_1 - 1770329982691 .png " role = " button " title = " AaronLopez_1 - 1770329982691 .png " alt = " AaronLopez_1 - 1770329982691 .png " / > </ span > role="button" title="AaronLopez_1-1770329982691.png" alt="AaronLopez_1-1770329982691.png" "/><\/span><\/P>
Uma análise mais detalhada da lógica Groovy:<\/P>
\/\/ Captura variáveis e alguns artefatos dinâmicos para montar o caminho do sistema de arquivos da saída exportSubnetwork