У меня есть док-приложение Java, работающее в кластере Kubernetes.До сих пор я настроил ограничение на процессор в 1,5 ядра.Теперь я увеличил количество доступных процессоров до 3. Чтобы мое приложение работало лучше.
К сожалению, теперь ему нужно значительно больше памяти и он получает OOMKilled от Kubernetes.На этом графике показано прямое сравнение общего потребления памяти контейнером для 1,5 ядер (зеленый) и 3 ядер (желтый) (ничто иное, кроме ограничений ЦП):
Куча Java всегда выглядит хорошо и, похоже, не является проблемой.Потребление памяти в родной памяти.
Мое приложение реализовано с использованием Spring Boot 1.5.15.RELEASE, Hibernate 5.2.17.FINAL, Flyway, Tomcat.Я компилирую с Java 8 и запускаю его с контейнером Docker OpenJDK 10.
В последние дни я много отлаживал, используя JProfiler и jmealloc, как описано в этом посте об обнаружении утечки памяти .JMEalloc рассказал мне о большом количестве Java.util.zipInflater.
Кто-нибудь знает, что может объяснить (для меня очень нерационально) связь доступных процессоров с собственным потреблением памяти?Любые советы будут оценены: -)!
Спасибо и С уважением
Матиас