Весеннее загрузочное приложение все еще получает OOM в Kubernetes
У меня седые волосы от этого. У меня есть приложение Spring Boot, работающее в Kubernetes, и я не могу найти какое-либо разумное значение для ограничения памяти, очень часто я получаю OOM на значениях ниже 512 МБ.
Вот как я запускаю приложение в Dockerfile:
ENTRYPOINT ["java", "-XshowSettings: vm", "-Xms64m", "-Xmx128m", "-XX: CompressedClassSpaceSize = 32m", "-XX: ReservedCodeCacheSize = 32m", "-XX: MaxMetaspaceSize = 90m", "-Djava.security.egd = file: / dev /./ urandom", "-jar", "/app.jar"]
Всего где-то около 300 МБ нужно только для приложения Spring Boot. Если я установлю что-нибудь pod memory limit
ниже 512MB я получаю OOMKill
, Должен ли я принимать во внимание также некоторые другие потребители памяти? Что занимает еще 100 МБ? Я знаю, что это не так много, но в инфраструктуре микросервиса и при запуске большого количества реплик бесполезно запускать такой сервис с 1 ГБ памяти. За любые намеки, я благодарен.
Видя это, когда я захожу в модуль:
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
1 0 root S 583m 2% 1 6% java -XshowSettings:vm -Xms64m -Xmx128m -XX:CompressedClassSpaceSize=32m -XX:ReservedCodeCacheSize=32m -XX:MaxMetaspaceSize=90m -Djava.security.egd=file:/dev/./urandom -jar /app.jar