全部產品
Search
文件中心

Application Real-Time Monitoring Service:ARMS分位元指標計算原理

更新時間:Oct 24, 2024

ARMS支援通過分位元統計指標資料,本文介紹ARMS分位元指標的計算原理。

背景介紹

分位元是將一組資料按照大小順序分成若干等份的數值點,用來表示資料的分布情況。常見的分位元包括:

  • P50代表中位元,即將資料分為兩等份的數值點。

  • P75表示資料中排在前75%的數值點。

  • P90表示資料中排在前90%的數值點。

  • P99表示資料中排在前99%的數值點。

通過分位元可以更直觀地瞭解資料的分布情況,以及資料中的極端值和離群值。

樣本說明

樣本樣本:[2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 20]

對應的分位元分別為:

  • P50: 10

  • P75: 16

  • P90: 18

  • P99: 20

分位元指標樣本

新版控制台

開啟分位元統計功能的操作請參見Java應用自訂配置

2024-10-22_16-54-41

舊版控制台

開啟分位元統計功能的操作請參見自訂配置

2024-10-22_16-51-03

ARMS探針分位元計算原理

4.x及以上版本探針基於分桶的方式來計算耗時分位元,目前預設的分桶邊界為:

[0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 10000.0]。

對應的分桶耗時區間為:

  • 桶0:(-∞, 0.0]

  • 桶1:(0.0, 5.0]

  • 桶2:(5.0, 10.0]

  • 桶3:(10.0, 25.0]

  • 桶4:(25.0,50.0]

  • 桶5:(50.0,75.0]

  • 桶6:(75.0,100.0]

  • 桶7:(100.0,250.0]

  • 桶8:(250.0,500.0]

  • 桶9:(500.0,750.0]

  • 桶10:(750.0,1000.0]

  • 桶11:(1000.0,2500.0]

  • 桶12:(2500.0,5000.0]

  • 桶13:(5000.0,7500.0]

  • 桶14:(7500.0,10000.0]

  • 桶15:(10000.0, +∞]

下面結合樣本說明中的樣本說明ARMS計算分位元的原理。

  1. 針對每一個樣本點,確定該樣本點對應的分桶,並對對應的分貯體計數器計數加1,得到如下結果:

    • 桶0:0

    • 桶1:2

    • 桶2:5

    • 桶3:7

    • 桶4:0

    • 桶5:0

    • 桶6:0

    • 桶7:0

    • 桶8:0

    • 桶9:0

    • 桶10:0

    • 桶11:0

    • 桶12:0

    • 桶13:0

    • 桶14:0

    • 桶15:0

  2. 計算分位元。

    以計算P75為例。

    1. 先根據需要計算的分位元計算分桶表。

      P75即需要保證75%的資料在左邊,共有14個樣本資料,14*0.75 = 10.5,需要找到一個分桶,該分桶的資料和該分桶左邊的資料加起來需要有11個樣本,所以找到桶3。

    2. 按照線性插值的方法計算最終分位元。

      桶0 + 桶1 + 桶2已經有7個資料點了,所以在桶3中僅需要找4個資料點,桶3中總共有7個資料點,再結合桶3的區間(10.0, 25.0]

      所以最終P75 = 10.0 + (25.0-10.0)* 4 / 7 = 18.6。

分位元優缺點分析

優點:開銷極小,無需儲存全量樣本資料即可計算任意分位元。

缺點:在耗時極小、耗時極大、樣本數很少等情境下,分位元存在計算不準確的情況。

ARMS調用鏈分析分位元計算原理

調用鏈分析中分位元是以滿足頁面過濾條件的所有Span的耗時為樣本資料,並調用Log Service的SQLFunction Compute得到,詳情請參見函數概覽中估算函數的approx_percentile函數說明。