Почему в трассировках стека задержки нет среднего? - PullRequest
0 голосов
/ 01 ноября 2018

Когда я открываю файл .jfr (Java Flight Record) с помощью Java Mission Control, я могу найти «Stack Trace», «Longest» и «Count» в Thread -> Latencies -> Latency Stack Traces. Я забочусь о среднем, но не самый длинный. На вкладке Java Latencies есть среднее значение, но оно содержит все задержки, связанные с типом события. Некоторые из них для меня бессмысленны, например:

sun.misc.Unsafe.park(boolean, long) 
    295,569,155,245 436,427

java.util.concurrent.locks.LockSupport.park(Object) 
    295,569,155,245 344,030

java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()   
    295,569,155,245 263,418

java.util.concurrent.LinkedBlockingQueue.take() 
    63,773,776,315  257,531

java.util.concurrent.ThreadPoolExecutor.getTask()   
    63,773,776,315  257,511

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)    
    63,773,776,315  257,511

java.util.concurrent.ThreadPoolExecutor$Worker.run()    
    63,773,776,315  257,511

java.lang.Thread.run()  
    63,773,776,315  257,511

Выше указано время простоя пула потоков, оно ожидает следующей задачи. Среднее значение этого и всех остальных стековых трасс не имеет смысла. Я забочусь только о задержках следов бизнес-стека. Как я могу получить среднее значение конкретной трассировки стека задержки. Могу ли я экспортировать исходные данные в CSV, тогда я могу рассчитать самостоятельно.

1 Ответ

0 голосов
/ 02 ноября 2018

Чтобы сохранить низкие служебные данные, Flight Recorder регистрирует только выбросы. Например. если продолжительность задержки ниже 20 мс, она не записывается.

Можно было бы сделать выборку задержек, чтобы получить приблизительную среднюю задержку, но на сегодняшний день она недоступна (JDK 11).

...