Can you run the app with enough memory and check process memory usage from `oc rsh`? Perhaps it will give more insight.

The container is not running a separate OS. It is just the process you are starting within that container and the libraries it loads. And any additional processes it spawns. So standard memory profiling techniques should apply within the container.

I know that people are looking at ways to decrease java footprint for small apps. You know the java modularization effort. graalvm as another example. Presently situation is not ideal for such use cases IMO. I trust that things will improve over time though.

Karl Nicholas wrote on 06/13/18 00:19:
I’m messing around with*JAVA_MAX_MEM_RATIO* to see about saving on memory. With every setting I also adjust the container memory so that I get the following JVM parameters.

exec java -javaagent:/opt/jolokia/jolokia.jar=config=/opt/jolokia/etc/jolokia.properties -Xms512m -Xmx512m -XX:+UseParallelGC -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MaxMetaspaceSize=256m -XX:ParallelGCThreads=2 -Djava.util.concurrent.ForkJoinPool.common.parallelism=2 -XX:CICompilerCount=2 -XX:+ExitOnOutOfMemoryError -cp . -jar /deployments/opinions-web-swarm.jar

The “*Xms512m -Xmx512m*” are, to me, the important ones. So, if I set the *container memory to 1Gb and the JAVA_MAX_MEM_RATIO to 50% *(the default), then I get the above JVM settings and my application works fine.

If I set the *container memory to 854Mb and the JAVA_MAX_MEM_RATIO to 60%*, then I get the above settings and my application, so far, works fine.

If I set the *container memory to 732Mb and the JAVA_MAX_MEM_RATIO to 70%*, then I get the above JVM settings and my application *CRASHES.*

So, something outside the JVM needs more 732-512 or 220Mb (and less than 342, I’m guessing 256?) of memory to run the JVM? Does the OS inside need that much? The image is a wildfly-11-swarm image with EJB/JSF/REST and a few things built inside of openjdk18-openshift:latest image.

Is there some way to configure or know how much the openjdk18-openshift redhat supplied image needs for memory outside of the JVM settings? Should I look into rebuilding it myself if I need to control the memory usage?

Thanks.



_______________________________________________
users mailing list
users@lists.openshift.redhat.com
http://lists.openshift.redhat.com/openshiftmm/listinfo/users


_______________________________________________
users mailing list
users@lists.openshift.redhat.com
http://lists.openshift.redhat.com/openshiftmm/listinfo/users

Reply via email to