Когда процесс Java, а точнее JSM HotSpot, получает сигнал 15 (SIGTERM), он инициирует последовательность выключения.Одним из его важных шагов является вызов перехватчиков завершения работы .
перехватчиков отключения - это обычные потоки Java.По соглашению они должны быстро завершить свою работу, но иногда (как и в обычном Java-коде) хуки завершения работы могут зацикливаться, блокировать, ждать чего-либо или иным образом задерживать завершение.JVM будет зависать до тех пор, пока не завершатся все перехватчики.
Используйте утилиту jstack
, чтобы определить, что мешает своевременному завершению.Ищите поток SIGTERM handler
в дампе потока - он, вероятно, будет ожидать завершения какого-либо другого потока (нарушителя).JVM не будет нормально выходить во время работы потока нарушителя.