Ich habe ein Rätsel, dass ich gemischte Ratschläge bekomme, wie ich vorgehen soll. Deshalb möchte ich es für einige begründete Antworten an GIS-SE senden.
Szenario:
Der Client verfügt über eine Web-Mapping-Anwendung. Möchte nicht in mehrere kleinere Anwendungen aufgeteilt werden. Obwohl dies gegen den heutigen Ansatz für Karten im Web verstößt (dh viele fokussierte Webkarten-Apps über eine Haupt-Webkarte), bin ich der festen Überzeugung, dass für einige Benutzer der Versuch, eine GIS-Anwendung im Web zu replizieren, von Vorteil ist ok ( manchmal )
Der Client hat einen Großteil seiner Grundkarten-Layer in separaten Diensten zwischengespeichert.
- Der Client benötigt noch weitere 600-700 Layer in einem dynamischen Kartendienst ...
- Der Dienst wird mit all diesen Schichten veröffentlicht wird ausgeschaltet .
- Es wird nicht erwartet, dass Benutzer mehr als 10-40 Ebenen gleichzeitig aktivieren.
Ich kann mir vorstellen, dass Ihre anfängliche Reaktion darauf meiner ähnelt (600+ ?! WTF ?!).
Aber - die Anforderung ist in Stein gemeißelt und warum nicht? Ihre frühere ArcIMS-Anwendung hatte ähnliche Funktionen. Warum kann dieses neuere ArcGIS Server-Produkt nicht dasselbe tun? Die Benutzer müssen möglicherweise in der Lage sein, Vergleiche durchzuführen und Analysen für den gesamten Bereich von Schichten durchzuführen, selbst wenn die Schichten zu anderen Abteilungen gehören.
Bevor Sie zu Schlussfolgerungen gelangen, ist der Client ein erfahrener ArcGIS Server-Administrator.
Sie haben die 600 Schichten nach allen Best-Practice-Regeln verwaltet: zB Skalenbereiche kombiniert mit Definitionsabfragen; Beschriftung über Beschriftung; Verallgemeinerung komplexer Schichten in kleinen Maßstäben; als MSDs veröffentlichen; etc
Problem :
Was ist der bessere Ansatz hier?
Veröffentlichen Sie alle 600 Layer in einem dynamischen Karten-Service
Teilen Sie die Ebenen in logische Gruppierungen auf (Hydrologie, Planung, Ökologie, Versorgungsunternehmen usw.).
Wenn Sie mit # 1 gehen, und Sie haben ein paar komplexe Ebenen aktiviert. Wenn Sie einen einfachen Punkt-Layer aktivieren möchten, muss ArcGIS Server weiterhin die gesamten Layer rendern, die erneut angezeigt werden.
Wenn Sie sich für Nummer 2 entscheiden, muss die Webanwendung möglicherweise jedes Mal, wenn Sie eine Anforderung stellen, mehrere GET-Anforderungen für ExportMaps von den einzelnen Karten-Services senden (ist dies nicht der Fall oder führt zu einer zusätzlichen Belastung von ArcGIS Server über Nummer 1 ?)
Das führt dann zu Konfiguration und Abstimmung, um sicherzustellen, dass alles so schnell wie möglich geht. Wir können das Back-End von ArcGIS Server auf mehrere Hosts skalieren und verfügen über eine gute Hardware, auf der es installiert werden kann.
Wenn Sie sich für Nummer 1 entscheiden, können Sie die maximale Anzahl von Instanzen ausgeben, die von AGS verarbeitet werden können.
Wenn Sie sich für Nummer 2 entscheiden, gehen wir davon aus, dass Sie die Leistung der Kartendienste bewerten (Auslastungstests und Wartezeiten) und die Min / Max-Instanzen entsprechend adressieren, um sicherzustellen, dass es keinen Dienst gibt, der ein „schwaches Glied“ ist.
Im Moment neige ich zur # 2 Annäherung, da mein Kopf mir immer noch sagt, dass 600 Schichten in einem Dienst Wahnsinn sind, aber wenn sie alle standardmäßig ausgeschaltet sind, gibt es wirklich kein Problem.
Würde gerne deine Gedanken hören. Lassen Sie mich wissen, wenn Sie weitere Informationen über die Kommentare benötigen, aber nicht nach Antworten wie "Verwenden einer Desktop-Anwendung" oder "Lernen Sie sie dazu, Dinge anders zu machen" suchen.
In den Kommentardiskussionen habe ich eine andere Überlegung nicht erwähnt. Die Anwendung, in der der Dienst verwendet wird, bietet die Möglichkeit der Sicherheit auf Ebenenebene (auf Anwendungsebene). Daher wird die Gruppe von Benutzern (die ziemlich groß ist) einer bestimmten Rolle zugewiesen, und diese Rolle hat Zugriff auf die vollständigen 600 Ebenen. Andere Rollen sind begrenzt.
quelle
Antworten:
Verwendete das Capacity Planning Tool , um einen superlastigen Karten-Service mit 4 lite Karten-Services zu vergleichen. Die Ergebnisse zeigen, dass der schwere Karten-Service der richtige Weg ist.
Dies ist möglicherweise nicht die richtige Antwort, und das Kapazitätsplanungstool berücksichtigt nicht alle Faktoren (z. B. Benutzerworkflows). Lassen Sie mich über Kommentare wissen, was Sie denken.
1 superlastiger Kartendienst:
CPU-Auslastung des App-Servers = 49,4%
CPU-Auslastung des Datenbankservers = 7,6%
Netzwerklast = 16 MBit / s
Antwortzeit der Anzeige = 0,88 Sekunden
(Bilder können von RC in großem Maßstab gesehen und in neuem Tab geöffnet werden)
4 Lite-Kartendienste:
CPU-Auslastung des App-Servers = 55,4%
CPU-Auslastung des Datenbankservers = 7,6%
Netzwerklast = 64 Mbit / s
Antwortzeit der Anzeige = 0,32 Sekunden, also zwischen 0,32 und 1,28 Sekunden, abhängig vom Overhead des Webbrowsers
Weitere Logik zur Unterstützung des One-Map-Service-Ansatzes:
Alle Layer befinden sich daher im selben Karten-Service.
ein. Eine Anfrage wird an den Server gesendet.
b. ein SOC-Prozess zeichnet die Karte
c. Ein Bild wird über das Netzwerk zurückgegeben
Die 40 Ebenen sind daher auf 4 Kartendienste (jeweils 10 Ebenen) verteilt.
ein. 4 Anfragen werden an den Server gesendet.
B. 4 SOC-Prozesse zeichnen eine Karte
c. Über das Netzwerk werden 4 Bilder zurückgegeben
1a und 1c sind schneller und belasten das Netzwerk weniger als 2a und 2c.
2b kann die Parallelverarbeitung verwenden, um eine Karte für einen einzelnen Benutzer schneller als 1b zurückzugeben, dies ist jedoch für viele Benutzer nicht der Fall. Tatsächlich wird der Aufwand für die zusätzlichen Transaktionen, die vom Server in 2b verarbeitet werden (plus die zusätzliche Netzwerklast von 2c), 1b mit zunehmender Anzahl von Benutzern viel besser skalieren.
quelle
Die Verwendung mehrerer Dienste, das Skalieren von Layern / Labels, das Zwischenspeichern und die Verwendung nicht dynamischer Labels tragen zwar zur Verbesserung der Webanwendungserfahrung bei, der erste Treffer beim Laden aller über 600 Layer in eine Anwendung wird jedoch vom Endbenutzer bemerkt. Besonders die Zeit, die zum Auffüllen des Inhaltsverzeichnisses benötigt wird. Wenn Sie eine Anwendung mit mehr als 600 Ebenen erstellen müssen, würde ich auf jeden Fall Option 2 wählen. Möglicherweise möchten Sie Ihre Datenstruktur anhand eines Datenmodells (z. B. des Datenmodells der lokalen Verwaltung) modellieren.
Im folgenden Whitepaper werden einige interessante Best-Practice-Richtlinien und Leistungsstatistiken für Konfigurationen von ArcGIS Server-Webanwendungen vorgestellt.
http://www.esri.com/library/whitepapers/pdfs/creating-arcgisserver-web-mapping.pdf
quelle