Spring Java-приложение работает неправильно с динамической памятью Hyper-V - PullRequest
0 голосов
/ 12 октября 2018

У меня есть несколько приложений Java с пружинной загрузкой, которые периодически ведут себя неправильно, когда Hyper-V настроен с динамической памятью.Я не указываю минимальные или максимальные параметры памяти Java, потому что я не знаю, сколько или мало нужно каждому приложению, поэтому я предпочитаю, чтобы Java принимала это решение за меня.Все приложения запускаются и, кажется, работают, однако иногда они просто перестают отвечать на запросы, и журналы не указывают на какие-либо ошибки или что на них не хватает ресурсов.В других случаях приложения работают нормально.Я подозреваю, что это связано с динамическим распределением памяти от hyper-v, но, поскольку он иногда работает в течение длительных длительных периодов времени, я не знаю, что является причиной этого.Когда я запускаю его для своей локальной машины, у меня нет этой проблемы, однако я не работаю в течение продолжительных периодов времени на своей локальной машине.Когда мои приложения работают, виртуальная машина использует от 50% до 80% памяти, которую видит виртуальная машина, и кажется, что она не расширяется полностью до максимального объема оперативной памяти, разрешенного динамически.Любые идеи о том, как определить, является ли это память, связанная с динамической памяти Hyper-V?Физический сервер hyper-v работает под управлением 2012 R2, а виртуальная машина работает под управлением Windows Server 2016. Java версия 1.8.0_71 Java SE Runtime build 1.8.0_171-b11 64-разрядный сервер Java Hotspot, сборка виртуальной машины 25.171-b11, смешанный режим.

1 Ответ

0 голосов
/ 13 октября 2018

Я бы проверил размер процесса в вашем HV.Java будет использовать больше памяти, чем просто куча, поэтому, если ваша куча составляет 80% виртуальной машины, она может превысить выделенную память и сильно поменяться местами, что определенно заставит процесс перестать работать.Скорее всего, это произойдет на GC, что делает процесс нереагирующим.

Первое, что я хотел бы проверить, это то, сколько операций ввода / вывода он выполняет / выполняет, и сколько памяти у вашей ОС, когда это происходит.

...