Done
Details
Details
Assignee
Unassigned
UnassignedReporter
Wayne Schneider
Wayne SchneiderPriority
Sprint
None
Development Team
Core: Platform
TestRail: Cases
Open TestRail: Cases
TestRail: Runs
Open TestRail: Runs
Created January 23, 2019 at 4:15 PM
Updated August 11, 2020 at 4:18 PM
Resolved October 21, 2019 at 10:38 AM
Right now, backend modules launched as containers by Okapi have no memory limits imposed by default. In addition, for Java-based modules, in a container, the JVM by default sees all system memory as available to it, regardless of any container memory limit.
We are currently managing this by setting an environment variable
JAVA_OPTIONS=-Xmx256m
(or whatever is required according to the developer) for all Java-based modules. This solution works OK, but it requires that the DevOps team configure each module individually, and the memory requirements of the module are not documented except in the deployment variables file in folio-ansible.A better solution might be:
Update the launch descriptors in each module's module descriptor template to set the
HostConfig/Memory
key indockerArgs
to the appropriate default as determined by the module development team. This will limit each container's memory usage. It could still be overridden in a deployment descriptorUpdate the base Java image for FOLIO Docker containers to use the
-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
switches as part of the Java command line to allow the JVM to see the container memory limit