У меня есть приложение Spring Java 8, развернутое на сервере Tomcat 8 с 64 ГБ и многоядерным процессором.
Приложение, рассчитанное на количество пользователей, выполняющих небольшие операции каждый день, а большие процессы запланированы для запуска в ночное время, когданет пользовательской операции.
Иногда приложение замедлялось и перестало отвечать, в основном в дневное время, когда пользователь выполнял небольшую операцию.После перезапуска сервера он стал нормальным в течение нескольких дней.
Мои наблюдения при медленной работе приложения:
- На стороне БД нет заблокированных запросов или сеансов.
- Естьв то время ошибок не было.
- В это время
OutofMemory
или исключение, связанное с памятью, отсутствует. - Я проверил JVM через jVisual, поскольку память в куче продолжает расти, а также количество классовМассовый рост.
- Я пытался очистить мусор вручную, но безрезультатно.
Аргумент JVM:
-Xms8g-Xmx16g-XX:+AggressiveOpts-XX:+UseConcMarkSweepGC
У меня есть дамп кучи JVM, пока онбыл медленным, но я не знаю, как Class or Method or Thread
, который вызвал медлительность сервера,
Ищет предложение для решения медлительности.