jvm в kubernetes / docker не хватает памяти быстрее, чем в автономном режиме - PullRequest
0 голосов
/ 07 декабря 2018

Мы перемещаем наши JVK-серверы JDK 1.8v131 в среду Kubernetes / Docker.
У нас мало серверов JVM, работающих в автономных виртуальных машинах, и несколько работающих в среде Kubernetes / Docker, и оба типа присутствуют в производстве.
Ста же самая нагрузка JVM Kubernetes / Docker исчерпывает память, тогда как JVM в виртуальных машинах работают нормально без проблем.
Мы использовали точные SAME параметры JVM для работы в VM & Container.

Есть идеи, как решить эту проблему?

Вот варианты:

Environment:
      JAVA_MEM_OPTS: -Xms2048M -Xmx2048M 
                     -XX:MaxPermSize=256M -XX:+ExitOnOutOfMemoryError -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 
                     -XX:+HeapDumpOnOutOfMemoryError 
                     -XX:HeapDumpPath=/heapdumps/${HOSTNAME}_$(date +%Y%m%d_%H_%M_%S).hprof  

      JAVA_GC_OPTS:  -Dnogclogging=true -XX:+PrintGC -XX:+PrintGCDetail

2018-12-07T15: 43: 21.42043862Z {Куча доGC invocations = 2880 (полные 625):2018-12-07T15: 43: 21.420465613Z PSYoungGen всего 435712K, использовано 249344K 2018-12-07T15: 43: 21.420469712Z Eden Space 249344K, использовано 100% 2018-12-07T15: 43: 21.420472561Z из космоса 186368K, использовано 0%
2018-12-07T15: 43: 21.420475332Z для пробела 228352K, использовано 0%
2018-12-07T15: 43: 21.420477921Z Всего ParOldGen 1398272K, использовано 1397679K2018-12-07T15: 43: 21.420480674Z пространство объекта 1398272K, использовано 99%2018-12-07T15: 43: 21.420483127Z Metaspace
используется 229431K, емкость 249792K, выделено 249968K, зарезервировано 1271808K2018-12-07T15: 43: 21.420485549Z используется пространство класса 24598K, емкость 27501K, выделено 27544K, зарезервировано 1048576K2018-12-07T15: 43: 22.628605014Z 2018-12-07T15: 43: 21.420 + 0000: 124733.208:]] 1647023K-> 1646334K (1833984K),], 1.2079201 с] [Times: user = 1.98 sys = 0.01, real= 1,21 с]2018-12-07T15: 43: 22.62868917Z Куча после вызовов GC = 2880 (полное 625):2018-12-07T15: 43: 22.628794768Z PSYoungGen всего 435712K, использовано 248654K 2018-12-07T15: 43: 22.628799885Z Eden space 249344K, использовано 99% 2018-12-07T15: 43: 22.628803713Z из космоса 186368K, использовано 0%
2018-12-07T15: 43: 22,628807485Z до пробела 228352K, использовано 0%
2018-12-07T15: 43: 22.628811115Z ParOldGen всего 1398272K, использовано 1397679K2018-12-07T15: 43: 22.62881498Z пространство объекта 1398272K, использовано 99%2018-12-07T15: 43: 22.628818943Z Metaspace
используется 229431K, емкость 249792K, выделено 249968K, зарезервировано 1271808K2018-12-07T15: 43: 22,628827543Z используется пространство класса 24598K, емкость 27501K, выделено 27544K, зарезервировано 1048576K2018-12-07T15: 43: 22.628831766Z}2018-12-07T15: 43: 22.632712004Z {Куча до вызовов GC = 2881 (полное 626):2018-12-07T15: 43: 22.63273803Z PSYoungGen всего 435712K, использовано 249344K 2018-12-07T15: 43: 22.632742051Z Eden Space 249344K, использовано 100% **** 2018-12-07T15: 43: 22.63274617Z из космоса 186368K, использовано 0%2018-12-07T15: 43: 22,632752151Z для пробела 228352K, использовано 0% 2018-12-07T15: 43: 22.632756279Z Всего ParOldGen 1398272K, использовано 1397679K2018-12-07T15: 43: 22.632760269Z пространство объекта 1398272K, использовано 99%2018-12-07T15: 43: 22.632764456Z Metaspace
используется 229431K, емкость 249792K, выделено 249968K, зарезервировано 1271808K2018-12-07T15: 43: 22,632768599Z используется пространство класса 24598K, емкость 27501K, выделено 27544K, зарезервировано 1048576K2018-12-07T15: 43: 23.164683101Z 2018-12-07T15: 43: 22.632 + 0000: 124734.420: СЕРВЕР ПЕРЕСТАВЛЯЕТ ЗДЕСЬ

1 Ответ

0 голосов
/ 08 декабря 2018

Заданы ли у вас требования к памяти и ограничения на объем памяти в контейнере?JDK 8u131 не знает, что он работает внутри контейнера.Он по-прежнему видит ресурсы виртуальных машин.Это может быть причиной того, что ваша JVM внутри контейнера немедленно убивается.

В 2017 году есть хорошая статья от redhat. https://developers.redhat.com/blog/2017/03/14/java-inside-docker/

...