Decrease the degree of parallelism for performance optimization in Mindbreeze Enterprise

Last update: 16 May 2022

Summary

When Mindbreeze Enterprise 2021 or above is used in conjunction with Fabasoft Folio/eGov-Suite 2022 and later, performance issues with queries can be mitigated by setting a fixed number of query threads per index in the Mindbreeze Configuration.

Information

The Mindbreeze setting "Query Threads per Index" (querythreadsperindex) limits the query threads per index, and by default is 0, that means, Mindbreeze automatically adjusts the thread on it's demand. The automatic mode will highly use multi-threading that in some situations might degrade the performance of the server.

Therefore, with the parameter "Query Threads per Index" (querythreadsperindex) setting to a number above 0, Mindbreeze will use the set number of threads.

Solution

The number of threads per index should be calculated for each index individually with this formula:

Number of physical Cores on the Server / Number of Buckets across all Indices on the Server * Number of Buckets in the Index

e.g.

32 cores / 40 buckets_sum * 18 buckets_index = 14,4 = 15 Query Threads per Index.

The result needs to be entered under "Query Threads per Index" in the "Advanced Settings" of the index.

This also can be set by the command "mesconfig attrset" , example:

mesconfig attrset querythreadsperindex 15 Index[@queryport=23300]
(it is important to include the square brackets in the command)

This will set the option to a value of 15 for the index with query port 23300.

Further performance increases

Further performance increases can be achieved by setting

  • the option „Enable Precomputed ACLs“ to „Force
  • the option „Number of ACL Precomputation Threads“ to the same value as „Query Threads per Index“.