脚本

awk '{print $2}' access.log | sort -n | awk '{
    a[NR]=$1
} END {
    print "P50:", a[int(NR*0.50)]
    print "P90:", a[int(NR*0.90)]
    print "P95:", a[int(NR*0.95)]
    print "P99:", a[int(NR*0.99)]
}'

重复一次指标含义

举个例子,假设有 100 个请求的延迟数据(单位:毫秒),按从小到大排序:

[1, 2, 3, ..., 50, ..., 90, 95, 100, 200, 500] 
P50(中位数) = 第 50 个请求的延迟(50ms)→ 50% 的请求 ≤ 50ms。
P90 = 第 90 个请求的延迟(90ms)→ 90% 的请求 ≤ 90ms。
P99 = 第 99 个请求的延迟(200ms)→ 99% 的请求 ≤ 200ms。