среда, 7 сентября 2016 г.

Обнаружение проблем jvm с работающим приложением

Утилиты:
jps - показывает только JVM процессы, и команды, которыми они были запущены
jstat - получение статистики по работающему процессу: всевозможные опции по работе GC; работа класслоудера - что загружает, что выгружает (-class); JIT компиляция -compiler и -printcompilation  . Обычно неплохо получить несколько снимков за короткий промежуток времени, чтобы не снять тот, момент, когда злоумышлениик спрятался. Указываем pid промежуток времени в милисекундах между снимками и количество снимков.
jmap - делает снимок текущего состояния кучи.
jstack - делается снимок состояния текущего стектрейса приложения.
jhat - подымает http/html сервер, который выводит информацию по дампу в браузер, кроме того с помощью специального языка мы можем OQL(похож на sql) искать в дампе то что нам нужно




1) Шаг 1. Узнаем pid нашего приложения.
$ jps

2) Шаг 2 - снимаем jstack-том треддамп и находим нужные потоки для анализа по идентификаторам, которые мы запомнили с Шага 1.
$ jstack 24151 > stacktrace.log

3) Шаг 3.
$ top -Р
Видим потоки jvm отдельными(linux системные потоки). Замечаем, какие потоки едят процессорные мощности, запоминаем их идентификаторы.

4) Шаг 4.
Переводим в 16-ю систему айди тредов и ищем его в дампе - смотрим что с ним происходит.
$ grep -A30 0x5FB9 stacktrace.log

Комментариев нет:

Отправить комментарий