Les clients souhaitent et attendent 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 vos services sont efficaces, plus nombreux sont les clients pouvant être pris en charge.
Les conseils et techniques suivantes permettent d'optimiser les performances de vos services. En général, les techniques sont présentées dans l'ordre. Celles qui offrent les améliorations 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 votre temps d'exécution, 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 relatives au 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. Quand le service s'exécute, 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é, ce qui constitue un réel gain de performance.
Par exemple, le service Viewshed (Champ de vision) hébergé sur Esri SampleServer et Extension ArcGIS Network Analyst, créent des polygones de temps de trajet qui utilisent des couches. En fonction de la taille du jeu de données, vous pouvez gagner plus de 1 à 2 secondes par exécution de service.
Utiliser des données locales sur ArcGIS Server
Les données de projet nécessaires à votre 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.
Ecriture de données intermédiaires en mémoire
Écrivez des données intermédiaires (temporaires) dans l’espace de travail in_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étraitez les données utilisées par vos 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 simple d'optimisation des opérations de sélection spatiale et attributaire. Voici quelques exemples supplémentaires :
- Dans le didacticiel Exemple de service de géotraitement : bassin versant, un raster d'accumulation et de direction de flux est créé pour prétraiter des données hydrologiques.
- 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 que votre 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 simple et rapide parmi les attributs de distance, plutôt qu'une requête spatiale moins efficace.
Ajout d'un index attributaire
Si votre 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. Vous pouvez utiliser l’outil Ajouter un index attributaire. Il suffit de créer l'index une seule fois, ce qui peut s'effectuer en dehors de votre modèle ou script.
Ajout d'index spatiaux
Si votre modèle ou votre script formule des requêtes spatiales sur les fichiers de formes, créez un index spatial pour le fichier de formes à 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 automatiquement et mis à jour pour vous. Dans certains cas, le recalcul d'un index spatial permet d'améliorer les performances, comme indiqué dans la rubrique Définition des index spatiaux.
Utilisation de tâches synchrones plutôt qu'asynchrones
Vous pouvez définir votre 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 que son exécution de manière asynchrone.
Evitez des transformations de coordonnées inutiles
Si votre 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 de vos jeux de données et identifier les besoins éventuels en termes de conversion de ces systèmes par les outils. Vous pouvez convertir tous les jeux de données utilisés par votre outil en un seul système de coordonnées.
Réduisez la taille de 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 de vos données géographiques :
- Supprimez les attributs inutiles de vos 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. Vos entités possèdent peut-être plus de sommets que nécessaire, ce qui augmente inutilement la taille de votre jeu de données.
- Si vos 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, vos entités contiennent des détails qui sont adaptés à une grande échelle, mais votre analyse ou votre présentation est à une petite échelle.
Vous avez un commentaire à formuler concernant cette rubrique ?