Analyse de la Scalabilité des Sous-réseaux
Qu'est-ce que l'Analyse de la Scalabilité des Sous-réseaux ?
Avant de parler de l'analyse de scalabilité des sous-reseaux dans Utility Network, passons en revue les defnitions de ce qu'est un sous-reseau et ce qu'est une analyse de scalabilite9 :
Un sous-reseau :
Dans un utility network, un sous-reseau est une partition ou un sous-ensemble topologique des donne9es dans un niveau of9 toutes les entite9s participantes ont connectivite9 aux meames contrf4leurs. Un sous-reseau est souvent utilise9 pour le trae7age afin de de9terminer si la connectivite9 est disponible.
Analyse de scalabilite9 :
L'analyse de scalabilite9 sert de9terminer la capacite9 d'un de9ploiement Utility Network ex9ecuter plusieurs requ0ates simultan9ees (par exemple, updateSubnetwork et exportSubnetwork). Cela est typiquement fait pour comprendre si les objectifs m9etiers dominants par le temps peuvent 9etre atteints. Par exemple, un d9eploiement particulier peut-il exporter 5 000 sous-rseaux dans une fentre de 4 heures ?
La r9ponse cette question est inconnue jusqu' ce qu'elle soit teste et vrifie.
La scalabilit d'un d ploiement est lie la quantit de concurrence qui peut avoir lieu en m
me temps tout en maintenant une performance optimale des op rations d'int rat. Cet article discute comment appliquer la concurrence via un test (inclus dans l'article).
Note : Pour plus d'informations sur un sous-rseau, voir : Le cycle de vie du sous-rseau dans Utility Network
Notre objectif et but avec Utility Network
- Automatiser les tches de mise jour ou d'exportation d'une liste de sous-rseaux
- Capturer le temps de performance
- Tche globale
- Opérations individuelles (par exemple, temps pour mettre jour un sous-rseau spcifique)
- Solution configurable pour rpondre aux exigences
Temps sensible
Ressource sensible
Pourquoi effectuer une analyse Update/Export Subnetwork ?
Objectif typique et contraintes temporelles sont une exigence mtiere
Exercer deux fonctions par sous-rseau
Mise jour (updateSubnetwork)
Effectue couramment aprs la modification et la validation de la topologie du rseau ou l'activation de la topologie du rseau
Exportation (exportSubnetwork)
Utilis pour extraire des informations sur le sous-rseau vers un fichier qui peut ensuite tre utilis par un systme externe comme la gestion des pannes
Avant qu'un sous-rseau puisse tre export hors du systme, il doit tre mis jour (actualis)
Les deux sont des fonctions importantes du utility network. En tant qu'administrateur GIS ou dveloppeur, il est important de comprendre comment ces oprations se mettent l' chelle. Comprendre le temps ncessaire pour traiter une liste de sous-rseaux est l'analyse principale.
Cela peut tre pouss plus loin en explorant des solutions qui optimisent la tche pour le temps ou les ressources systme. Ces dfis ont des approches similaires sur comment accomplir la tche de mise jour ou d'exportation de nombreux sous-rseaux.
Obtenir des informations sur les objectifs mtier
L'exportation des sous-rseaux peut prendre plus de temps informatique selon les options utilis
Certaines options peuvent tre une exigence mtier
La performance et la scalabilit peuvent affecter l'architecture
D'aprs les rsultats et conclusions du test
La configuration du dploiement pourrait devoir changer pour rpondre aux besoins mtier
Comment raliser une analyse de scalabilit des sous-rseaux ?
Liste des Sous-rseaux
La premire tape consiste extraire une liste des sous-rseaux du jeu de donn Utility Network.
Cela peut tre fait par divers moyens :
ArcGIS ProScript ArcPyDclarations SQL select Dclaration SQL exemple :< LI >< Span > Se connecter la base de donn Utility Network geodatabase </ Span ></ LI >< LI > Trouver l'ObjectId pour la table Subnetwork : < UL > < LI > Cet ObjectId est dynamique et peut varier </ LI > < LI > Le type GUID est constant </ LI > </ UL > </ LI > </ UL > < pre class = " lia-code-sample language-sql " >< code > -- Trouver Utility Network ObjectId pour la table Subnetwork
SELECT OBJECTID FROM sde.GDB_ITEMS WHERE type='{37672BD2-B9F3-48C1-89B5-8C43BBBB6D57}' </ code ></ pre >< UL >< LI >< Span > Pour notre base d'exemple, cela a retourn < STRONG > 446 </ STRONG ></ Span ></ LI >< UL >< LI >< Span > Cette valeur ObjectId sera utilise dans la requte suivante </ Span ></ LI ></ UL ></ LI >< LI >< Span > Exporter la liste des sous-rseaux </ Span ></ LI ></ UL >< pre class = " lia-code-sample language-sql " >< code > -- Exporter liste des Sous-rseaux
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
</ code ></ pre >< UL >< LI >< Span > Enregistrer la sortie dans un fichier (csv ou tsv) </ Span >< UL >< LI >< Span > Certains SubnetworkControllerNames peuvent contenir des virgules (par exemple, ",") et un fichier avec valeurs tabulaires serait plus appropri que CSV </ Span ></ LI ></ UL ></ LI ></ UL >< P >< Span > Pour le jeu de donn Utility Network utilis dans cet article, la liste rultante des sous-rseaux ressemble au suivant lorsque les lignes sont spares par tabulations. </ Span ></ P >< P >< span class = " lia-inline-image-display-wrapper lia-image-align-inline " image-alt = "AaronLopez_0-1770178336498.png" style = "width: 999px;" >< img src = "https://us.v-cdn.net/6038851/uploads/images/147848i9D51F4B49D3F23B3/AaronLopez_0-1770178336498.png" role = "button" title = "AaronLopez_0-1770178336498.png" alt = "AaronLopez_0-1770178336498.png" /></ span ></ P >< P >< FONT color="#FF0000">Note : On suppose que l'9tat actuel du rseau contient des sous-rseaux propres et sales. Comment les sous-rseaux deviennent sales dpassent le cadre de cet article.Note : Plusieurs facteurs mtier peuvent influencer la slection pour extraire les sous-rseaux. Cette requte vise vous aider commencer.Apache JMeterAinsi que mentionns dans d'autres articles communautaires, Apache JMeter est un outil gratuit de test. Il est excellent pour exercer le point final REST d'ArcGIS Enterprise afin de tester plusieurs fonctions :Test de performance avec Apache JMeter (Introduction)Excuter un test charge Apache JMeter en mode ligne de commande (Dbutant/Intermdiaire) Cration d'un test charge Apache JMeter contre le service cartographique SampleWorldCities (Dbutant/Intermdiaire) Utilisation d'Apache JMeter pour tester en charge un service authentifi ArcGIS Enterprise (Intermdiaire/Avanc) Mme s'il existe beaucoup d'outils de test, JMeter sera utilis pour appeler un service Utility Network dans ArcGIS Enterprise afin d'effectuer les requtes updateSubnetwork et exportSubnetwork. Donn Utility Network -- Naperville Electric Donn Naperville Electric vues depuis ArcGIS Pro :
Mettre à jour le Sous-réseau Apache JMeter – Vue système du dossier Plan de Test lia-image-align-inline" image-alt="AaronLopez_1-1770168462393.jpg" style="width: 999px;">
<\/span><\/P>En dehors de JMeter, le Plan de Test est simplement un fichier jmx, tout seul. Comme mentionné dans d'autres Articles de la Communauté, il est recommandé de créer une structure de dossiers pour le projet sur lequel vous travaillez. Cela peut aider à la gestion, surtout si vous avez de nombreux tests différents faisant différentes choses. Dans les dossiers illustrés ci-dessus, la liste des sous-réseaux et les résultats des tests peuvent être conservés dans le répertoire UpdateSubnetwork où il est moins probable qu'ils soient confondus avec d'autres données d'exécution de test.<\/P>Le Plan de Test Update Subnetwork<\/H2>Pour télécharger le Plan de Test Apache JMeter utilisé dans cet Article, voir : UpdateSubnetwork1.zip<\/A><\/STRONG> <\/LI>L'ouverture du Plan de Test dans Apache JMeter devrait ressembler à ce qui suit :<\/SPAN>Ajustez les Variables Définies par l'Utilisateur pour correspondre à votre environnement<\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>Composants Clés du Plan de Test<\/H2>Avec le Plan de Test UpdateSubnetwork développé, les éléments suivants peuvent être vus :<\/P>Variables Définies par l'UtilisateurListe ci-dessus, utilisée pour adapter facilement le test à un environnement<\/LI><\/UL><\/LI>Rapport AgrégéUtilisé pour le débogage du test et l'analyse post-test<\/LI><\/UL><\/LI>Groupe de ThreadsDéfinit la concurrence des threads ou la scalabilité<\/STRONG><\/U> du test<\/LI>Il est recommandé d'utiliser les valeurs par défaut (par exemple, 1 thread de test) lors de la construction d'un test<\/LI><\/UL><\/LI>GenerateTokenObtient un token depuis ArcGIS EnterpriseUtilise les identifiants définis précédemment<\/LI><\/UL>Le conserve pendant le test<\/LI><\/UL><\/LI>While Controller SyncUtilisé lorsque la logique métier dicte que les appels doivent être synchrones<\/STRONG><\/LI>Boucle sur la liste des sous-réseaux<\/LI><\/UL><\/LI>CSV Data Set ConfigRelie la liste des sous-réseaux au testFichier texte CSV ou TSV<\/LI><\/UL><\/LI><\/UL><\/LI>If ControllerUne branche logique du test utilisant Groovy<\/LI>Suit la branche si le sous-réseau est sale (IsDirty=True ou IsDirty=1)<\/LI><\/UL><\/LI>USN Request (${SUBNETWORKNAME})L'élément de test qui émet la requête pour effectuer la majeure partie du travail<\/LI>À partir de la source du fichier de données, ${SUBNETWORKNAME} est rempli avec le nom du sous-réseau<\/LI><\/UL><\/LI>While Controller AsyncUtilisé lorsque la logique métier dicte que les appels doivent être asynchrones<\/STRONG>Idéal pour les requêtes updateSubnetwork très longues à exécuter<\/LI><\/UL> informations précieuses sur les performances des opérations issues du test
Note : Il est toujours recommandé de coordonner l'heure de début et la durée du test de charge avec le personnel approprié de votre organisation. Cela garantit un impact minimal pour les utilisateurs et autres collègues qui pourraient également avoir besoin d'utiliser votre site ArcGIS Enterprise sur site. De plus, cela aide à prévenir le bruit système provenant d'autres activités et utilisations qui pourraient "polluer" les résultats du test.Note : Pour plusieurs raisons, il est fortement conseillé de ne jamais tester en charge les services fournis par ArcGIS Online.Analyse -- Rapport et Évaluation
Élément de rapport agrégé (Débogage du test)
À partir de cette analyse, nous pouvons facilement voir la transaction UpdateSubnetwork_Sync et quelques statistiques clés qui nous donnent des informations importantes sur la performance globale de l'opération.

Pour une estimation approximative du temps total, en utilisant 1 thread de test en simultanéité, multipliez simplement le nombre d'échantillons par la moyenne. Par exemple : "# Échantillons * Moyenne" = Temps total d'exécution du test (ms)
Pour les exécutions de test "officielles", il est recommandé de désactiver l'écouteur Rapport Agrégé dans l'arbre (clic droit simple puis sélectionner Désactiver) et de ne l'utiliser que pour la création, le débogage et le traitement post-test.
Note : Pour le traitement post-test, le Rapport Agrégé peut toujours être utilisé pour parcourir, sélectionner et charger un fichier de résultats même s'il est désactivé dans l'interface graphique.
Le fichier de résultats
Lorsqu'il est exécuté depuis le script en ligne de commande, JMeter produit un fichier de résultats en sortie. Le fichier de résultats (*.jtl), contient des informations brutes sur les requêtes sous forme textuelle.
Le contenu de ce fichier liste tous les sous-réseaux et leurs temps de réponse individuels. Bien qu'il soit facile à ouvrir et à consulter avec n'importe quel éditeur courant, effectuer une analyse sous cette forme n'est pas recommandé.

Élément de rapport agrégé (Analyse post-test)
Revenons à l'élément Rapport Agrégé pour une analyse post-test. Depuis l'interface graphique JMeter, cliquez sur le bouton Parcourir pour trouver le fichier jtl des résultats puis sélectionnez Ouvrir pour le charger.
Une fois chargé, le fichier jtl est traité par JMeter et un rapport statistique est généré dans la section Rapport Agrégé.
L'élément Rapport Agrégé est interactif, vous pouvez donc cliquer sur l'en-tête Maximum pour trier facilement la liste et trouver les sous-réseaux qui prenaient le plus de temps. La transaction UpdateSubnetwork_Sync est toujours listée, ce qui est crucial pour comprendre si les chiffres globaux respectent certaines exigences de performance définies dans un accord de niveau de service (SLA).

Note : Le nombre de sous-réseaux dans cet ensemble de données est faible. Les résultats des tests issus d'ensembles de données en production comporteraient plus d'échantillons.
Pousser l'analyse plus loin
Comme le fichier de résultats est au format valeurs séparées par des virgules, il peut facilement être ouvert dans un tableur.

Une vue des données résultantes avec un formatage minimal.
C'est bien mais peut-on faire mieux ?

Tracer la performance des transactions offre une meilleure clarté.
Note : Si vous recherchez uniquement les chiffres globaux, filtrez les requêtes individuelles des sous-réseaux (par exemple, le champ où responseMessage = OK).
Exporter Sous-réseau
Apache JMeter – Vue système des fichiers du dossier Plan de Test

Le plan de test Export Subnetwork
- Téléchargez le plan de test Apache JMeter utilisé dans cet article ici : ExportSubnetwork1.zip
- L'ouverture du plan de test dans Apache JMeter devrait ressembler à ceci :
- Ajustez les variables définies par l'utilisateur pour correspondre à votre environnement

Note : Définissez les valeurs du groupe d'utilisateurs pour déterminer le profil d'évolutivité du test Export Subnetwork. Une valeur plus élevée pour "Users" signifie une simultanéité maximale plus importante que le test atteindra. Augmentez "Rampup" pour augmenter progressivement la quantité de simultanéité pendant cette durée (en secondes) jusqu'à atteindre le maximum.
La requête HTTP Export Subnetwork
Cet élément du plan de test est responsable des appels web exportSubnetwork dans le test.
Ce composant émet la requête et JMeter évalue la réponse renvoyée par ArcGIS Enterprise via le point d'accès REST.

Note : Ce plan de test Export Subnetwork est conçu pour exporter chaque sous-réseau dans le fichier de données.
JMeter avancé
Obtenir la taille du résultat Export Subnetwork
La requête exportSubnetwork produit un fichier sur ArcGIS Server. Ce fichier en sortie (généralement formaté en json ou pbf) peut ensuite être importé dans d'autres systèmes. La taille sur disque de cet élément peut varier mais constitue une métadonnée utile à capturer lors du test.
Même si faire lire directement la sortie par l'élément Requête pour obtenir la taille pourrait sembler simple, ce serait très inefficace. Cependant, cette tâche offre une opportunité d'utiliser le langage Groovy mentionné précédemment et d'effectuer rapidement des calculs plus lourds sur le système de fichiers.
Après la requête exportSubnetwork, il y a des requêtes supplémentaires sous forme de deux échantillonneurs JSR223 :
- CalculateStatistics SN:${SUBNETWORKNAME}
- SN:${SUBNETWORKNAME} Size:${outputFileSizeKB}KB
Le premier échantillon contient une logique Groovy pour lire le fichier sorti par l'exportation et le placer dans une variable 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>
Un examen plus approfondi de la logique Groovy :<\/P>
\/\/ Récupérer les variables et certains artefacts dynamiques pour assembler le chemin du système de fichiers de la sortie exportSubnetwork