Memory management, auto recover and network settings

  • You must use 64-bit Java! (For 32-bit the heap size limit is 2 GB, which is insufficient.)

  • Previously listed settings now set by the configuration script, are not listed anymore or marked as such.

Setting description

Option entry

Memory management

 

Heap size recommendations:

  • You must set at least 4096 Megabyte heap size. Lower values can cause failures.

  • Use the same amount of memory for the initial heap size and the maximum heap size.

  • If a large heap size is available and intended to be used for high performance:

    • Avoid the range of 32 GB up to 48 GB!
    • Rather choose a value slightly below 32 GB such as “‑Xmx32000m”(or above 48 GB).

Values from the said range are inefficient because a value ≥ 32 GB switches from 32‑bit addressing to 64‑bit. This causes an overhead and disables an internal tuning mechanism (Compressed Oops).

Initial heap size (must be <= maximum heap size)

-Xms4096m

Maximum heap size

-Xmx4096m

Use the Garbage-First (G1) Collector

-XX:+UseG1GC

G1 is usually recommended. Do not use G1 but the concurrent garbage collector if you plan to allocate larger blocks of heap memory for file buffering, e.g. to increase performance. See Garbage collector and related settings “ima.archive.tempFile.inMemoryThreshold...”.

Using the concurrent garbage collector as an alternative

To use the concurrent garbage collector:

-XX:+UseConcMarkSweepGC

For example, to set a buffer size of 2 MB:

-Dima.archive.bufferSize=2097152

Maximum metaspace size

‑XX:MaxMetaspaceSize=512m

Also see: Response time and memory consumption related to metaspace size

Reference object processing performance

-XX:+ParallelRefProcEnabled

Use this setting to increase the general performance. This only works with the G1 garbage collector.

Auto recover settings

Enable auto recover

ima.autorecover=true

Enable the auto recover resynchronization processing on one application server at most.

Possible values are “true” or “false”. The default value is “true”.

In case of a clustered ImageMaster installation (multiple ImageMaster domains sharing a single database), only one node must have auto recover enabled. All other nodes must have this value set to 'false' to avoid concurrent attempts to recover a damaged file.

Timeout for recover process

ima.autorecover.threadTimeout=720

Set the number of minutes the coordinating auto recover resynchronization processing waits for a worker thread at most to return from processing a packet part. The default value is 720 (12 hours). If the value is -1, the coordinating auto recover processing waits indefinitely for each worker thread.

Obligatory settings required for ImageMaster compatibility

Disable Lazy Fetch

org.jboss.weld.context.attributes.lazyFetch=false

If you install ImageMaster with the configuration script according to this manual, this setting is done automatically.

The lazy fetch mechanism must be disabled in WildFly/JBoss as it causes conflicts in long running processes such as the ones triggered by an ImageMaster client export.

Network settings

IPv4 (Internet Protocol version 4)

-Djava.net.preferIPv4Stack=true

If you host ImageMaster in an IPv4 environment, set this property to “true” to enforce IPv4 (e.g. to avoid network connection issues). Do not set this parameter in an IPv6 environment!

Table 311: Memory management and auto recover