Les utilisateurs comptent sur des outils aussi rapides que possible. En conséquence, votre outil Web doit être rapide et efficace. Comme ArcGIS Server peut prendre en charge plusieurs clients à la fois, des services inefficaces risquent de surcharger votre serveur. À ressources informatiques équivalentes, plus les services sont efficaces, plus nombreux sont les clients pouvant être pris en charge.
Les conseils et techniques suivants permettent d’optimiser les performances des services. En général, les techniques sont présentées dans l’ordre : celles qui offrent les optimisations de performances les plus conséquentes sont présentées en premier. Les derniers conseils peuvent vous faire gagner quelques dixièmes de seconde sur la durée, ce qui peut être important dans certains cas.
Utilisation de couches pour les données de projet
Lorsque vous exécutez un outil avant de le partager en tant qu’outil Web, utilisez des couches comme données en entrée plutôt que des chemins vers des jeux de données situés sur le disque. Une couche référence un jeu de données sur le disque et certaines couches mettent en cache des propriétés du jeu de données. Cela est particulièrement vrai pour les couches de jeu de données réseau et les couches raster. L’utilisation d’une couche à la place du chemin vers le jeu de données présente un avantage en termes de performances car lorsque le service est lancé, il crée la couche à partir du jeu de données, met en cache les propriétés de base du jeu de données et garde le jeu de données ouvert. Lors de l’exécution du service, les propriétés du jeu de données sont immédiatement disponibles, le jeu de données est ouvert et prêt à être manipulé.
Par exemple, le service Champ de vision hébergé sur Esri SampleServer et Extension ArcGIS Network Analyst créent des polygones isochrones qui utilisent des couches. En fonction de la taille du jeu de données, vous pouvez gagner de 1 à 2 secondes par exécution de service.
Conseil :
Consultez un exemple d’utilisation des couches dans les outils de script Python.
Utilisation de données locales sur ArcGIS Server
Les données de projet nécessaires à l’outil Web doivent être locales sur ArcGIS Server. Les données qui sont partagées et auxquelles vous accédez via un partage réseau (UNC) sont plus lentes que si elles étaient situées sur une même machine. Les chiffres des performances varient beaucoup, mais il n’est pas rare de constater que la lecture et l’écriture de données sur un réseau LAN prend deux fois plus de temps que sur un disque local.
Écriture de données intermédiaires en mémoire
Écrivez des données intermédiaires (temporaires) dans l’espace de travail memory. L’écriture de données en mémoire est plus rapide que leur écriture sur disque.
Remarque :
Vous pouvez également écrire des données en sortie en mémoire, tant que vous ne configurez pas l’affichage des sorties en tant que couche d’images de carte.
Prétraitement des données utilisées par les tâches
La plupart des outils Web sont censés être des workflows spécialisés offrant des réponses aux requêtes spatiales spécifiques posées par les clients web. Ces workflows ayant tendance à être des opérations spécifiques sur des données connues, vous pouvez presque toujours prétraiter les données en vue d’optimiser l’opération. Par exemple, l’ajout d’un attribut ou d’un index spatial est un prétraitement d’optimisation des opérations de sélection spatiale et attributaire.
- Vous pouvez précalculer les distances à partir d’emplacements connus à l’aide de l’outil Proche ou Générer la table de proximité. Par exemple, supposons qu’un service permet aux clients de sélectionner des parcelles vacantes situées à une distance définie par l’utilisateur du fleuve Los Angeles. Vous pouvez utiliser l’outil Sélectionner une couche par emplacement pour effectuer cette sélection, mais il est beaucoup plus rapide de précalculer la distance de chaque parcelle par rapport à Los Angeles River (à l’aide de l’outil Proche) et de stocker la distance calculée en tant qu’attribut des parcelles. Vous indexerez alors cet attribut à l’aide de l’outil Ajouter un index attributaire. Lorsque le client émet une requête, la tâche peut ainsi effectuer une sélection d’attributs parmi les attributs de distance, plutôt qu’une requête spatiale, moins efficace.
Ajout d’un index attributaire
Si l’outil sélectionne des données à l’aide de requêtes attributaires, créez un index attributaire pour chaque attribut utilisé dans les requêtes grâce à l’outil Ajouter un index attributaire. Il suffit de créer l’index une seule fois, ce qui peut s’effectuer en dehors du modèle ou du script.
Ajout d’index spatiaux
Si le modèle ou le script formule des requêtes spatiales sur des shapefiles, créez un index spatial pour le shapefile à l’aide de l’outil Ajouter un index spatial. Si vous utilisez des classes d’entités de géodatabase, les index spatiaux sont créés et mis à jour automatiquement. Dans certains cas, le recalcul d’un index spatial permet d’améliorer les performances, comme indiqué dans la rubrique Index spatiaux dans la géodatabase.
Utilisation du mode synchrone plutôt qu’asynchrone
Vous pouvez définir l’outil Web pour qu’il s’exécute de manière synchrone ou asynchrone. En cas d’exécution asynchrone, le temps système d’exécution du serveur est plus long. En conséquence, les outils asynchrones s’exécutent rarement en moins d’une seconde. L’exécution de la même tâche de manière synchrone est plus rapide d’environ un dixième de seconde par rapport à son exécution de manière asynchrone.
Pas de transformations de coordonnées inutiles
Si l’outil Web utilise des jeux de données exprimés dans des systèmes de coordonnées différents, les outils devront peut-être les convertir en un seul et même système de coordonnées au cours de l’exécution. En fonction de la taille des jeux de données, la conversion des coordonnées d’un système de coordonnées en un autre peut inutilement ralentir les performances. Vous devez donc connaître les systèmes de coordonnées des jeux de données et identifier les éventuelles obligations de conversion de ces systèmes par les outils. Vous pouvez convertir tous les jeux de données utilisés par l’outil en un seul système de coordonnées.
Réduction de la taille des données
Tous les logiciels de traitement de données fonctionnent plus rapidement quand le jeu de données est petit. Voici quelques méthodes permettant de réduire la taille des données géographiques :
- Supprimez les attributs inutiles des données de projet avec l’outil Supprimer un champ.
- Les entités linéaires et surfaciques possèdent des sommets qui définissent leur forme. Chaque sommet est une coordonnée x,y. Les entités possèdent peut-être plus de sommets que nécessaire, ce qui augmente inutilement la taille du jeu de données.
- Si les données proviennent d’une source externe, elles peuvent contenir des sommets en double ou des sommets si proches les uns des autres qu’ils ne contribuent pas à la définition de l’entité.
- Le nombre de sommets n’est pas ajusté à l’échelle d’analyse. Par exemple, les entités contiennent des détails qui sont adaptés à une grande échelle, mais l’analyse ou la présentation est à une petite échelle.
Vous avez un commentaire à formuler concernant cette rubrique ?