#spring-boot #docker #heap-size
#spring-boot #docker #размер кучи
Вопрос:
У меня есть приложение spring boot REST со встроенным tomcat, развернутым в контейнере docker. В моем файле развертывания YAML установлены следующие значения —
resources:
limits:
memory: 2.5G
requests:
memory: 512M
env:
- name: "SPRING_PROFILES_ACTIVE"
value: "dev"
- name: "JAVA_OPTS"
value: "-Xms512m -Xmx1024m"
и файл docerfile является —
FROM openjdk:8-jdk
ARG ARTIFACT_NAME
WORKDIR /app
COPY $ARTIFACT_NAME /app/app.jar
ENTRYPOINT exec java $JAVA_OPTS -jar /app/app.jar
Но размер кучи JVM не устанавливается равным 1G. Я даже пытался использовать
-XX: UnlockExperimentalVMOptions
-XX: UseCGroupMemoryLimitForHeap
-XX:MaxRamFraction=2
но результат всегда показывает MaxRamFraction как 4.
Комментарии:
1. Вы
docker inspect
загрузили изображение? Пробел передenv
случайным в SO или он также присутствует в вашем реальном файле?2. Да, я проверил модуль, и распределение памяти выглядит нормально. Максимальный размер кучи установлен равным 1/4 от доступной памяти, которую я не могу увеличить, изменив MaxRAMPercentage или MaxRamFraction или Xmx. В файле YAML нет проблем с пространством, приложение работает нормально.