Overview
Intermediary may sometimes crash as soon as you make changes to the XML configuration such as in a source AI installation, and automatically restart in a while. This is due to lower heap memory available than required which would be evident from the following error message raised as the JVM crashes
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000b4e80000, 438829056, 0) failed: error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 438829056 bytes for committing reserved memory.
# An error report with more information is saved as:
# /opt/actional/intermediary/working/hs_err_pid23988.log
MMM DD, YYYY hh:mm:ss PM com.actional.log.LoggerFactory$JavaUtilLogging$JavaUtilLogger log
SEVERE: LAUNCHER0060: Application exited with status 1.
Command line:
/opt/actional/intermediary/java/openjdk-1.8.0.252/jre/bin/java
Solution
This happens because of the insufficient heap space and inadequate RAM allocated to the machine.
- Typically, 4GB heap size is not sufficient if the size of a configuration XML goes above 150MB and heap size can be increased to 6GB or more. Test by gradually increasing the allocated memory, such as in 2GB increments.
- Visit Profiles and select the active profile, and set Initial Size and Max Size values under Memory Settings to the heap size value you have set in the step above.
- On the same page, under Additional JVM Options, add
-XX:+HeapDumpOnOutOfMemoryError
to the list. - Restart the server after these changes.
Testing
Intermediary shouldn't crash after these changes and if it still fails, then a heap dump will be generated which will be helpful for an investigation for the root cause. Please do share the heap dump file when you create a ticket with support if it crashes again.