Asynchronous loading thread pool configuration

Purpose of the asynchronous loading thread pool

The asynchronous thread pool is utilized by dashboard components that load their data in the background.
How to build a dashboard component that utilizes the thread pool is described in the chapter 'Asynchronous loading of custom dashboard components' of the Customizing chapter of the Technical Documentation.

The actual computations for fetching the data are done within a thread executor provided by a thread pool. Note that the thread pool is created only on the first usage of the asynchronous server operations. With our standard solution, this only happens on first loading of the web dashboard.
The thread pool discussed here is configurable in order to tweak performance for dashboard operation for the customer's business needs as described in the following.

Asynchronous loading thread pool configuration

images/download/attachments/195527456/MBeans_screenshot.png

The thread pool executing asynchronous server operations in the background has several configuration parameters.
The mentioned parameters directly reflect parameters and attributes of the Java class java.util.concurrent.ThreadPoolExecutor. Two of them are configurable as preference in the plugin_customization.ini. The other parameters are registered as MBean attributes in com.heiler.ppm - ManagedThreadPools - ServerOperation and thereby can only be viewed and managed during runtime (e.g. via the Product 360 Control Center or any other JMX browser).

Memory consumption

When changing the parameters they have to be viewed in context of the sizing of the system on which the Product 360 Server is running, also considering that there are already other Product 360 Server thread pools for other purposes which affect the global performance of the system.
Please keep in mind that dashboard components usually aggregate data for a lot of items, products or variants and thus consume a considerable amount of memory.

Parameters

Parameter

Description

MBean name

Preference in plugin_customization.ini

Thread pool core size

Per default the core size of the thread pool is thrice the number of available processors.

The number of threads held by the thread pool will never drop below this number, even if the threads are idle.

If the thread pool core size is reduced while every thread is running the reduction will take time until ample threads have finished their processing current method stack.

CorePoolSize

serverOperation.threadPool.corePoolSize

Thread pool maximum size

Per default the maximum size of the thread pool is thrice the number of available processors.

MaxPoolSize

serverOperation.threadPool.maxPoolSize

Thread priority

Priority of threads in the pool. Possible values are:

  • 1: minimum

  • 5: normal (default)

  • 10: maximum

ThreadPriority

images/s/o7yjop/8703/51k4y0/_/images/icons/emoticons/forbidden.svg

Attributes

Parameter

Description

MBean name

Active threads count

Number of threads that are actively executing tasks.

ActiveCount

Scheduled task count

Total number of scheduled tasks.

TaskCount

Task completion rate

The number of completed tasks per second.

CompletionRate

Task queue size

Size of the task queue.

QueueSize