Multithreaded Publishing

The Feature multithreaded publishing allows to use multiple cores for the publish process to reduce overall publishing times.

1 Configuration

The feature can be activated like this

node.conf

$FEATURE["multithreaded_publishing"] = true;
$PUBLISH_LOAD_BALANCING["threadlimit"] = 2;

Currently, the publish process will always use the configured number of threads for rendering pages, independent from the overall system load.

Currently, only one phase of the publish process – rendering of pages – is using multiple threads, when multithreaded publishing is activated.

2 Phases of the publish process

2.1 Waiting for dirt events

The publish process needs to wait until all pending dirt events have been handled.

2.2 Initialization

In this phase, the publish process collects data for calculation of the expected publish duration.

2.3 Synchronize Object Types

Changes made in the tagmap of Content Repositories are written into the Content Repository Databases.

2.4 Delete old Objects from Content Repository

Objects, that are removed from the backend (or pages taken offline) are removed from the Content Repositories.

2.5 Publish Files and Folders into Content Repository

Files, images and folders are published into the Content Repositories.

2.6 Rendering pages

All pages, that need to be republished are rendered, the content is stored in the backend database and also written into Content Repositories (if configured). This is the only phase, that uses multiple parallel threads for rendering. Saving the changes is synchronized to avoid possible DB locking problems.

2.7 Writing Pages and Files into Filesystem

All pages, images and files are written into the filesystem, if configured.

2.8 Invoking GenticsImageStore

The contents of all pages is scanned for GenticsImageStore URLs. The images are resized (if not found in the Cache) and the resized images are written into the filesystem.

2.9 Finalizing

The database transactions are committed and final cleanup is done.