Die Clients erwarten eine schnelle Verarbeitung. Daher müssen Ihre Geoverarbeitungsservices schnell und effizient sein. Da ArcGIS Server mehrere Clients gleichzeitig versorgen kann, führen ineffiziente Services möglicherweise zur Überlastung des Servers. Je effizienter die Services sind, desto mehr Clients können mit denselben Computerressourcen versorgt werden.
Mit den folgenden Tipps und Verfahren lässt sich die Performance von Services steigern. Die Verfahren werden in einer bestimmten Reihenfolge dargestellt – die Verfahren, die die größte Performance-Steigerung ermöglichen, werden zuerst beschrieben. Mit den letzten Tipps lassen sich einige Zehntelsekunden an Ausführungszeit sparen. Dies kann für einige Tasks erforderlich sein.
Verwenden Sie Layer für Projektdaten
Wenn Sie das Geoverarbeitungswerkzeug zur Erstellung eines Ergebnisses ausführen, das veröffentlicht werden soll, sollten Sie das Werkzeug mithilfe von Layern als Eingabe anstatt Pfaden zu Datasets auf der Festplatte ausführen. Ein Layer verweist auf ein Dataset auf der Festplatte, und Layer cachen Eigenschaften des Datasets. Dies gilt insbesondere für Netzwerk-Dataset-Layer und Raster-Layer. Wenn statt des Pfads zum Dataset ein Layer verwendet wird, steigert dies die Performance, weil der Service nach dessen Start den Layer aus dem Dataset erstellt, grundlegende Eigenschaften des Datasets zwischenspeichert und das Dataset geöffnet lässt. Wenn der Service ausgeführt wird, stehen die Eigenschaften des Datasets sofort zur Verfügung, und das Dataset ist geöffnet und steht bereit – eine Performance-Steigerung.
So verwenden beispielsweise der Sichtfeldservice auf dem Esri SampleServer und die Erweiterung "ArcGIS Network Analyst", Beispiele, die Reisezeitpolygone erstellen, allesamt Layer. Je nach Größe des Datasets können dadurch pro Serviceausführung mehr als ein oder zwei Sekunden eingespart werden.
Verwenden Sie auf ArcGIS for Server lokal gespeicherte Daten
Die von Geoverarbeitungsservices benötigten Projektdaten sollten lokal auf ArcGIS for Server gespeichert sein. Daten, die freigegeben werden oder auf die über eine Netzwerkfreigabe (UNC) zugegriffen wird, sind langsamer als wenn sie auf dem gleichen Rechner verfügbar wären. Die Performance-Werte variieren stark, es kann jedoch durchaus vorkommen, dass das Lesen und Schreiben von Daten in einem LAN doppelt so viel Zeit wie das Lesen von der lokalen Festplatte erfordert.
Schreiben Sie Zwischendaten in den Arbeitsspeicher
Sie können Zwischendaten (Scratch-Daten) in den Arbeitsspeicher schreiben. Dies ist schneller als das Schreiben von Daten auf die Festplatte.
Hinweis:
Sie können auch Ausgabedaten in den Arbeitsspeicher schreiben, solange Sie keinen Kartenservice des Ergebnisses verwenden.
Weitere Informationen zum Schreiben von Daten in den Speicher
Bereiten Sie die Daten vor, die von Tasks verwendet werden
Die meisten Geoverarbeitungsservices sind als spezialisierte Anwendungen konzipiert, die Antworten auf spezifische räumliche Abfragen von Web-Clients liefern. Da es sich bei Tasks i. d. R. um spezifische Vorgänge für bekannte Daten handelt, besteht fast immer die Möglichkeit, die Daten zum Optimieren des Vorgangs vorzuverarbeiten. Beispielsweise handelt es sich beim Hinzufügen eines Attributs oder räumlichen Indizes um eine einfache Vorverarbeitung, um räumliche oder Attributauswahlvorgänge zu optimieren. Weitere Beispiele:
- Im Lernprogramm Beispiel für GV-Service: Abflussgebiet werden hydrologische Daten durch das Erstellen eines Abflussakkumulations- und Fließrichtungs-Rasters vorverarbeitet.
- Mithilfe der Werkzeuge Near oder Near-Tabelle erstellen können Entfernungen zwischen Standorten vorab berechnet werden. Angenommen, Ihr Service erlaubt Clients, unbebaute Flurstücke auszuwählen, die sich in einer benutzerdefinierten Entfernung vom Los Angeles River befinden. Sie könnten diese Auswahl mithilfe des Werkzeugs Layer lagebezogen auswählen vornehmen, aber es wäre viel schneller, die Entfernung jedes Flurstücks vom Los Angeles River (mithilfe des Werkzeugs Near) vorab zu berechnen und die ermittelte Entfernung als Attribut der Flurstücke zu speichern. Sie würden dieses Attribut mithilfe des Werkzeugs Attributindex hinzufügen indizieren. Wenn der Client nun eine Abfrage stellt, kann Ihr Task anstatt einer weniger effizienten räumlichen Abfrage eine einfache und schnelle Attributauswahl auf Basis des Entfernungsattributs durchführen.
Fügen Sie Attributindizes hinzu
Wenn der Task mit Attributabfragen Daten auswählt, erstellen Sie einen Attributindex für jedes in Abfragen verwendete Attribut. Sie können das Werkzeug Attributindex hinzufügen verwenden. Sie müssen den Index nur einmal erstellen. Dies erfolgt außerhalb des Modells oder Skripts.
Fügen Sie räumliche Indizes hinzu
Wenn das Modell oder Skript räumliche Abfragen von Shapefiles ausführt, erstellen Sie mit dem Werkzeug Räumlichen Index hinzufügen einen räumlichen Index für das Shapefile. Wenn Sie Geodatabase-Feature-Classes verwenden, werden räumliche Indizes automatisch erstellt und verwaltet. Unter bestimmten Umständen kann durch Neuberechnen eines räumlichen Index die Performance verbessert werden (siehe Festlegen von räumlichen Indizes).
Verwenden Sie "synchron" statt "asynchron"
Sie können angeben, dass Ihr Geoverarbeitungsservice synchron oder asynchron ausgeführt wird. Der asynchrone Modus stellt für den Server eine geringe Zusatzbelastung dar, was bedeutet, dass asynchrone Tasks kaum unter einer Sekunde ausgeführt werden. Das Ausführen eines Tasks erfolgt im Synchronmodus etwa um eine Zehntelsekunde schneller als im Asynchronmodus.
Vermeiden Sie unnötige Koordinatentransformationen
Wenn Ihr Task Datasets aus verschiedenen Koordinatensystemen verwendet, müssen die von Ihrem Task verwendeten Geoverarbeitungswerkzeuge Koordinaten während der Ausführung möglicherweise in ein einziges gemeinsames Koordinatensystem transformieren. Je nach Größe Ihrer Datasets kann das Transformieren von Koordinaten aus einem anderen Koordinatensystem Ihren Task verlangsamen. Sie müssen darauf achten, welches Koordinatensystem Ihre Datasets verwenden, und ob die von Ihrem Task verwendeten Werkzeuge Koordinaten transformieren müssen. Sie können alle Datasets, die von Ihrem Task verwendet werden, in ein Koordinatensystem transformieren. Weitere Informationen zu Koordinatensystemen und deren Einfluss auf Geoverarbeitungswerkzeuge finden Sie in den unten aufgeführten Themen.
Verringern Sie die Datengröße
Jede Datenverarbeitungssoftware arbeitet schneller, wenn die Datasets klein sind. Es gibt mehrere Möglichkeiten, die Größe von geographischen Daten zu verringern.
- Entfernen Sie nicht benötigte Attribute Ihrer Projektdaten mit dem Werkzeug Feld löschen.
- Linien- und Polygon-Features weisen Stützpunkte auf, die die Form der Features definieren. Jeder Stützpunkt ist eine x,y-Koordinate. Möglicherweise weisen Features mehr Stützpunkte als erforderlich auf, sodass die Größe des Datasets unnötig erhöht wird.
- Wenn die Daten aus einer externen Quelle stammen, enthalten sie eventuell doppelte Stützpunkte oder Stützpunkte, die so nahe beieinander liegen, dass sie nicht zur Definition des Features beitragen.
- Die Anzahl der Stützpunkte entspricht nicht dem Analysemaßstab. Beispielsweise enthalten die Features Details, die bei großen Maßstäben angemessen sind, jedoch wird die Analyse oder Präsentation mit einem kleinen Maßstab ausgeführt.
Unterschiede zwischen 10.0 und höheren Versionen
Wenn Sie Geoverarbeitungsservices in 10.0 erstellt haben, gab es bestimmte Performance-Techniken, die Sie zum Erstellen von Services verwendet haben, wie unten angegeben. Diese Techniken müssen in 10.1 und höheren Versionen nicht mehr verwendet werden.
Ältere Versionen:
Wenn Ihre ArcGIS for Server-Konfiguration mehrere Rechner umfasste oder Sie UNC-Pfade zu Ihrem arcgisjobs-Verzeichnis verwendeten, wurde vor Version 10.1 die Einrichtung eines lokalen Auftragsverzeichnisses empfohlen. Dieses lokale Auftragsverzeichnis verbesserte die Ausführungszeit erheblich, da die Verarbeitung jedes Tasks auf dem lokalen Server erfolgt und das Endergebnis zum Client übertragen wird. Ab Version 10.1 ist der GIS-Serveradministrator für die Einrichtung lokaler Auftragsverzeichnisse zuständig. Als Task-Autor müssen Sie aber nicht mehr angeben, dass Ihr Task das lokale Auftragsverzeichnis verwendet, da dies automatisch verwendet wird, wenn der Server an einem Cluster mit mehr als einem Rechner teilnimmt oder die Verzeichnisse mithilfe eines UNC-Pfades referenziert werden.
Ältere Versionen:
Wenn Ihr Geoverarbeitungsservice Raster verarbeitete, wurde vor Version 10.1 empfohlen, diese im GRID-Format zu verwenden. Das GRID-Format war normalerweise schneller, da einige Tools für die Verarbeitung von GRIDS optimiert waren. Ab Version 10.1 können alle Raster-Werkzeuge nun das Quellenformat ohne Performance-Verlust lesen und schreiben.