Облегчение работы JVM с помощью Docker и службы Azure Kubernetes - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть небольшая проблема. Я создаю приложение Java Spring, но когда я пытаюсь запустить его в Azure Kubernetes Service (AKS) с помощью Docker, оно, похоже, использует много системных ресурсов (ОЗУ, ЦП являются основными соображениями). Помимо самого Spring, код довольно легкий, поэтому я не понимаю, почему он использует так много системных ресурсов. Есть ли у меня какие-либо рекомендации по сокращению использования системных ресурсов моего приложения Java Spring?

Цель приложения - облегченный CRUD-сервис поверх базы данных MongoDB. Уровень взаимодействия с БД использует Spring Data или Morphia для прямых операций с БД (более старые приложения используют Morphia, более новые разработки используют Spring Data, в некоторых местах с QueryDSL).

В частности, метрикой, с которой я сравниваю, является NodeJS, поэтому я бы хотел, чтобы мое Java-приложение работало на уровне, сопоставимом с Node-приложением аналогичного размера / области действия.

Спасибо!

Dockerfile (некоторые параметры отредактированы):

FROM openjdk:8-jre-alpine

RUN mkdir /[redacted]
ADD *.jar /[redacted]

ENV JVM_OPTS="-Xmx256M"
ENV JVM_ARGS="-Dspring.profiles.active=[redacted]"

EXPOSE 8080

ENTRYPOINT [ "sh", "-c", "java $JVM_ARGS $JVM_OPTS -jar /[redacted]" ]

Единственное, что делает параметр профиля Spring, это устанавливает набор настроек, необходимых для бизнес-логики приложения. Это ничего не устанавливает для JVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...