У меня есть Java-приложение (веб-приложение), которое порой демонстрирует очень высокую загрузку процессора (почти 90%) в течение нескольких часов. Эта команда Linux TOP
показывает это. При перезапуске приложения проблема исчезает.
Итак, чтобы исследовать:
Я беру Thread Dump, чтобы найти, какие потоки делают. Несколько потоков находятся в состоянии 'RUNNABLE'
, в некоторых других состояниях. При повторном использовании Thread Dumps я вижу некоторые потоки, которые всегда присутствуют в состоянии 'RUNNABLE'
. Таким образом, они кажутся виновниками.
Но я не могу точно сказать, какой поток зацикливает процессор или перешел в бесконечный цикл (тем самым вызывая высокую загрузку процессора).
Журналы не обязательно помогают, так как код нарушения может не записывать ничего.
Как мне исследовать - какая часть приложения или что-нить вызывает высокую загрузку процессора? - Любые другие идеи?