In ArcGIS Server 10.7 wurden geteilte Instanzen eingeführt. Mit dieser Einstellung tritt an die Stelle von eigenen reservierten Instanzen ein Pool von Serviceprozessen.

Service Management mit ArcGIS Server bis zur Version 10.6.1

ArcGIS Server erledigt seine gesamte Arbeit durch die Verwendung aktiver Service-Instanzen. Eine Instanz wird durch einen Computerprozess namens ArcSOC ausgeführt. Wenn eine Client-Anwendung eine Anforderung an einen Service stellt, der auf Ihrer ArcGIS Server-Site ausgeführt wird, wird diese Anforderung an einen ArcSOC-Prozess auf einer der Server der Site weitergeleitet.

Der Prozess führt die Anforderung aus und spielt das Ergebnis zurück. Jeder ArcSOC-Prozess kann jedoch jeweils nur eine Anfrage bearbeiten. Wenn ein ArcSOC-Prozess jedoch eine Anforderung bearbeitet, der noch eine weitere Anforderung zugeordnet ist, muss die zweite Anforderung warten. Dies merkt der Nutzer als Performanceverzögerung.

Aus diesem Grund lassen sich Service-Instanzen und Services nicht eins zu eins betrachten. Stattdessen hat jeder Service seinen eigenen dedizierten Instanzen-Pool mit einer definierten Mindestanzahl sowie einem Maximum von Service-Instanzen. Die ArcGIS Server-Site skaliert die Anzahl der aktiven ArcSOC-Prozesse innerhalb dieses definierten Bereichs.

Dem Standardbereich für Kartenservices entsprechen ein Minimum von einer und ein Maximum von zwei Instanzen.

Wenn diese Standardeinstellung nicht geändert werden, läuft immer ein ArcSOC-Prozess für eine Serviceanfrage. Wenn eine zweite Serviceanfrage abgeschickt wird, wird ein zweiter ArcSOC-Prozess für diesen Service erstellt. Der gestartete zweite Prozess wird priorisiert, alle anderen Serviceanfragen müssen warten, bis eine laufende Anfrage abgeschlossen ist.

Abbildung 1: Service mit zwei Instanzen
Abbildung 2: Dazugehörige ArcSOC-Prozesse zum Service

Die in der Abbildung 2 gezeigten ArcSOC-Prozesse verwenden zusammen über 200 MB vom Server-Arbeitsspeicher, auch wenn diese nicht aktiv genutzt werden. Dies stellt möglicherweise kein Problem dar, wenn Ihre Website eine kleine Anzahl von Services anbietet. Aber wenn eine Website Dutzende oder Hunderte von wenig genutzten Services anbietet, kann es zu einen Ressourcenproblem auf dem Server kommen.

Daher bieten wir eine Konfiguration an, bei der wir unsere hochfrequenten Services mit den benötigten Ressourcen isolieren – und erleichtern gleichzeitig den seltenen Datenverkehr unserer anderen Services auf eine Weise, die weder ungenutzten Speicher verbraucht noch eine Leistungsstörung aufweist.

An dieser Stelle kommen die geteilten Instanzen ins Spiel.

Geteilte Instanzen mit ArcGIS Server 10.7

Ab 10.7 verfügt jede ArcGIS Server-Site über einen geteilten Instanzen-Pool, der standardmäßig vier ArcSOC-Prozesse enthält. Sobald ein kompatibler Kartenservice für Ihre ArcGIS Server-Site veröffentlicht wurde, können Sie ihn für die Nutzung des geteilten Pools festlegen.

Der Service wird keinen eigenen Pool mehr aufweisen, sondern in den geteilten Pool eintauchen und bei Bedarf einen oder zwei ArcSOC verwenden. Sobald die Bearbeitung einer Anfrage abgeschlossen ist, kann der ArcSOC-Prozess wieder von jedem anderen Service im geteilten Pool verwendet werden.

Wie bei dedizierten Pools kann diese Funktion an Ihre Bedürfnisse angepasst werden. Auf der Seite „Pooling“ im ArcGIS Server Manager können Sie den Standardinstanztyp für kompatible Services angeben, die entweder dediziert oder geteilt genutzt werden sollen.

Sie können zudem die Anzahl der ArcSOCs, die im geteilten Pool laufen, jederzeit ändern. Im Gegensatz zum Minimal-zu-Maximalbereich, den Sie für dedizierte Pools festlegen, führt der geteilte Pool eine feste Anzahl von Instanzen aus.

Abbildung 3: Instanz-Pool Einstellungen im ArcGIS Server Manager

Um einen einzelnen Service für die Nutzung des geteilten Pools zu bestimmen, öffnen Sie die Seite „Service bearbeiten“ im ArcGIS Server Manager. Navigieren Sie zur Registerkarte „Pooling“ und aktivieren Sie die Schaltfläche „Geteilter Instanz-Pool“. Klicken Sie auf „Speichern und Neustart“, um Ihre Änderungen zu übernehmen. Sie können den Instanztyp eines Service jederzeit ändern.

Ein Service muss bestimmte Kriterien erfüllen, um den geteilten Instanz-Pool nutzen zu können. Wenn dies nicht der Fall ist, wird die Option im ArcGIS Server Manager ausgegraut.

Abbildung 4: Geteilten Instanz-Pool für einen Service aktivieren

Bei ArcGIS Enterprise 10.7 gelten folgende Kriterien:

  • Nur Kartenservices (Map Services), einschließlich Feature-Dienste, können den geteilten Pool nutzen.
  • Nur bestimmte Funktionen von Kartenservices (Feature Access, WFS, WMS und KML) können aktiviert werden. Auf der Registerkarte ‚Funktionen‘ können Sie inkompatible Funktionen deaktivieren.
  • Services, die benutzerdefinierte Serverobjekterweiterungen (SOE) oder Serverobjekt-Interceptoren (SOI) aufweisen, können keine geteilten Instanzen verwenden.
  • Von ArcMap veröffentlichte Services können keine geteilten Instanzen verwenden.
  • In ArcGIS Pro veröffentlichte gecachte Kartenservices, die die oben genannten Anforderungen erfüllen, können geteilte Instanzen verwenden.

Geteilte Instanzen bieten eine doppelte Lösung: Sie lösen das Problem, dass unbenutzte Services unnötige Speicherressourcen auf Ihrem Computer verbrauchen, ohne dem Benutzer, der die erste Anforderung an einen unbenutzten Service stellt, einen „Kaltstart“ zu ermöglichen.

Aber sie sind nicht nur ein Ersatz für die „min-zero“ Konfiguration, sie sind ebenso eine speicherkostengünstige Option für jeden kompatiblen Service, der nicht ständig mehrere Anfragen bearbeiten muss. Die Definition von „konstantem Traffic“ hängt von Ihrer Website und den verfügbaren Ressourcen ab; bei weniger als einer Anfrage pro Minute lässt sich von „selten“ sprechen).

Während Sie diese Services des „seltenen Datenverkehrs“ für die Nutzung des geteilten Pools konfigurieren, können Sie Ihren anderen Services weiterhin eigene dedizierte Pools mit beliebig vielen Instanzen zur Verfügung stellen. Somit können Sie eine hohe Verfügbarkeit Ihrer Services garantieren.

Schauen wir uns die ArcSOC-Prozesse auf dem Server nach der Umstellung von dedizierten auf geteilten Instanzen an. Statt der vorher existierenden zwei Prozesse ist der Instanz-Pool mit vier Instanzen in der folgenden Abbildung zu erkennen (DynamicMappingHost).

Abbildung 5: ArcSOC-Prozesse zum geteilten Instanz-Pool

Somit kann der geteilte Pool die Gesamtzahl der Instanzen, die Sie ausführen müssen, um den Traffic-Bedarf Ihrer Services zu decken, drastisch reduzieren. Dadurch wird es einfacher, ein optimales Gleichgewicht zwischen Leistung und Speicherauslastung zu finden.