Как правильно анализировать дамп java-потока?

Я пытаюсь понять больше о дампе потока Java. Я использую JBOSS EAP 4.3.

В настоящее время я столкнулся с проблемой производительности в одной из моих сред. внезапно загрузка процессора выросла до 700%. Я взял дамп потока и это огромный файл.

Я нашел много нижеприведенных записей ожидающих потоков в моем потоке.

"http-172.16.101.99-8080-4" daemon prio=10 tid=0x0000000059d16800 nid=0x5803 in Object.wait() [0x00002b00cf683000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000070c1eef60> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
    at java.lang.Object.wait(Object.java:485)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:416)
    - locked <0x000000070c1eef60> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:442)
    at java.lang.Thread.run(Thread.java:662)

Я хочу понять сверху ожидающую ветку. что привело к увеличению загрузки ЦП?


person Nageswara Rao M    schedule 20.01.2016    source источник
comment
ожидающие потоки не используют ЦП   -  person AdamSkywalker    schedule 20.01.2016
comment
ищите вместо этого RUNNING или RUNNABLE потоки   -  person Thilo    schedule 20.01.2016
comment
Как узнать, какой объект ждет. есть ли способ выяснить точную причину проблемы?   -  person Nageswara Rao M    schedule 20.01.2016
comment
вы можете видеть, что это waiting on <0x000000070c1eef60>. Найдите этот номер, чтобы узнать, у кого он заблокирован.   -  person Thilo    schedule 20.01.2016


Ответы (1)


Существует 6 различных состояний потока:

  1. НОВИНКА
  2. ОЖИДАНИЕ
  3. TIMED_WAITING
  4. ЗАПУСКНОЙ
  5. ЗАБЛОКИРОВАНО
  6. ПРЕКРАЩАЕТСЯ

NEW, WAITING, TIMED_WAITING, BLOCKED, TERMINATED потоки состояний не потребляют ресурсы ЦП. ЦП потребляют только потоки в состоянии RUNNABLE. Таким образом, если процессор вашего приложения набирает обороты, вам следует сосредоточиться только на трассировке стека потоков состояния RUNNABLE.

Захват дампов потоков вместе с выводом ‘top -H -p’ поможет вам определить потоки, вызывающие скачки загрузки ЦП. Вот хорошая статья, в которой вы узнаете, как устранить скачки ЦП.

person Jim T    schedule 12.12.2019