Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Inhalt

General

Internally jadice is making use of ThreadPoolExecutors. The different jadice products give the integrator the possibility to adjust threading by configuring the core pool size and the max pool size of their respective ThreadPoolExecutors.

(Warnung) Before changing the values below make sure you fully understand the consequences

Docker, Kubernetes & OpenShift

By default, most of the initial values for thread pools in jadice are defined by the number of available processors. Unfortunately, in a docker Docker-based environment the Java Runtime may return an unreliable value (see e.g. here) like "1". In that case the minimum value of "2" would be applied, which may be not what you want or expect. It is also possible that other modules or libraries rely on that mechanism which may also lead to an unexpected behavior.

  • Docker: set a CPU limit as stated here
  • OpenShift: define a Quota for the pod as stated here
  • General: you can also set the values for jadice thread pools manually but we recommend setting a CPU-limit on container-level to get a more predictable behavior
  • -XX:ActiveProcessorCount=X as JVM option as stated here

jadice document platform

Jadice TaskService Threadpool ("Jadice TaskService Worker default-...")

...

Class/Methoddefault valueminimum valuehints
ServerConfiguration.setTileRendererPoolCoreSizeRuntime.getRuntime().availableProcessors() or minimum 20
ServerConfiguration.setTileRendererPoolMaxSizeRuntime.getRuntime().availableProcessors() or minimum 21 & greater than tileRendererPoolCoreSize

Limitations

With JWT-3487 there was a logic introduced, that ensures that a single client can't utilize all tile-rendering threads. This makes sure that a very complex document won't block the work of all other users.

Class/Methoddefault valueminimum valuehints
ServerConfiguration.setTileRendererMaxParallelRenderingPerClient
  • if tileRendererPoolMaxSize is bigger than 8
    • tileRendererPoolMaxSize - 2
  • if tileRendererPoolMaxSize is smaller or equal to 8
    • tileRendererPoolMaxSize - 1
  • if tileRendererPoolMaxSize is smaller or equal to 2
    • 0
0The value 0 means that the behavior is turned off (so a single client can utilize all threads)

HTTP Request Processing Threads (App-server specific)

...