Wie können Probleme gelöst werden, bei denen eine grosse Anzahl von Diensten mit dem Wrapper unter Windows laufen |
|||||||
Wenn Dienste, die zusammen mit dem Wrapper laufen, installiert und gestartet werden, erreichen Sie ggf. einen Punkt, ab dem es unmöglich wird, einen weiteren Dienst zu starten. Gewöhnliche Hinweise dafür sind:
Jeder Dienst teilt eine bestimmte Speichermenge des internen Desktop-Heap-Bereichs zu, welcher benutzt wird, um Dinge wie API-Elemente etc. zu speichern. Eine detaillierte Beschreibung des internen Desktop Heap Bereichs kann auf einer externen Seite gefunden werden. Wenn der Dienst als ein nicht-interaktiver Dienst auf einem 32-bit Windows XP gestartet wird, beträgt die Standard Heap-Bereichsgröße 512KB. Der Wrapper selbst belegt etwa 10-15 KB für jede Instanz, die gestartet wird. Jede JVM wird auch etwa 20 KB belegen, jedoch kann dieser Wert - abhängig von den API-Elementen, die die JVM lädt - variieren. Wenn der Heap-Bereich bei Dienststart ausgeschöpft ist, können als Folge die obigen Fehler auftreten. Der Desktop-Heap kann mit dem Desktop Heap Monitor Tool, welches von Microsoft angeboten wird, bestimmt werden. Nachdem dieser installiert und konfiguriert wurde, sollte die Ausgabe wie folgt aussehen:
Die nicht-interaktiven Dienste, die als System User ausgeführt werden, gehören in diesem Fall zu Service-0x0-3e7$\Default. Wenn der Start von nicht-interaktiven Diensten (ausgeführt als System User) zunimmt, wird dementsprechend auch die Heap-Nutzung ansteigen. Das Ausführen des Dienstes als interaktiver Dienst hat zur Folge, dass die Nutzung des WinSta0\Default-Heap-Bereichs ansteigt. Das Ausführen des Dienstes mit einem bestimmten Benutzerkonto erstellt eine neue WinStation\Desktop-Sitzung für den Prozess. Jeder Dienst, der von diesem User ausgeführt wird, erhält tatsächlich eine eigene Sitzung. Es gibt aktuell zwei verfügbare Workarounds:
Ein 64-Bit Windows hat einen deutlich größeren Desktop-Heap-Bereich und braucht deshalb gleichzeitig viel mehr ausgeführte Dienste, um schlussendlich an seine Grenze zu stossen. |