Betrieb in einer Container-Umgebung
Docker, Kubernetes & OpenShift
jadice web toolkit verwaltet intern mehrere Thread-Pools für das parallele Abarbeiten von Tasks. Die Größe der Thread-Pools richtet sich dabei, sofern nicht explizit anders definiert, nach der Anzahl der im System vorhandenen Prozessorkerne. Unter Docker (und dadurch auch in Kubernetes und OpenShift) führt die Berechnung zu einem unerwarteten Ergebnis, wenn für den Container kein CPU-Limit definiert wurde. Die JVM liefert in diesem Fall bei der Abfrage der Prozessorkerne die Zahl 1 zurück, sodass die Thread-Pools mit nur 2 Threads gestartet werden. Möglicherweise verwenden auch andere Module außerhalb des jadice web toolkit einen ähnlichen Mechanismus, welcher ebenfalls zu einem unerwarteten Ergebnis führen kann. Es wird daher empfohlen den Container mit einem CPU-Limit zu versehen. Weiterführende Informationen finden Sie in dem Knowledge-Base-Artikel Thread Pools and Concurrency.