pps服务器未响应_服务响应时间与分布
分析服務響應時間分布,如:均值、中位值、P95值、P99值等如何計算
背景
最近看得多,寫得少,所謂
學而不思則罔,思而不學則殆還是得記錄筆記,以加強理解。
有篇博客提到服務響應時間各種值之優劣,特記錄之。
平均值
我們考察一個服務器的性能,除了QPS數據外,還會考察響應時間,當服務器負載增高時,往往會伴隨著響應時間的增長,但是這個值該如何度量,以精準的表現服務器當前之負載呢?
最常用的值為平均值,表示服務的平均響應時間,通過該值我們能夠知道服務當前響應的所有請求耗時的平均值。 例如平均耗時為100ms,表示服務器當前請求的總耗時/請求總數量,通過該值,我們大體能知道服務運行情況。 但是對于具體有多少個請求的耗時比100ms要大,大多少,是200ms,還是500ms,還是1000ms,我們無從得知。 而且,平均值這個數據容易掩蓋一些異常值問題,比如,我的財富加馬云財富的平均值也能過億,所以,平均值這個數據項過于簡單,提供的信息量太少。
那為什么我們通常采用平均值來衡量或者監控服務性能呢?
主要是由于該值容易計算,采用兩個變量S、N,即可持續計算平均值:
S = S + X N = N + 1 V = S/N通過該公式,當有新的耗時值X需要考量,很方便的就能算出平均值,就算QPS到幾十萬/s,也不在話下。
注意,該公式有個隱含問題,即是S增長過快問題,如果QPS過高,X值過大,很容易導致S溢出,從而導致結果計算異常。
可將該公式做如下改造:
Vs = S/N Vn = (S+X)/(N+1) = (Vs*N+X)/(N+1) = Vs + (X - Vs)/(N+1)該算法也只需要兩個變量,未考量數據X時——平均值Vs、數據個數N 但是,該算法由于不累加S,而只累加N,而N的增長極慢,不易導致溢出問題。
中位值
如上所述,由于平均值不能反映數據分布及極端異常值的問題,可以考慮采用中位值來作為度量。
中位值如何計算?
我們假設某服務在1s內響應了100個請求,耗時為X1、X2 ... X100,可以對這100個數按照從小到大的順序進行排序,在排序后的列表的中間位置的值——即為中位值,假設為150ms。
那這個值,150ms,表示什么意思呢? 它表示,服務器響應的這100個請求里面有50個的請求耗時小于150ms,另有50個請求的耗時大于150ms。
如果,我們有一個服務qps為3萬/s,經過計算響應耗時中位值為100ms,那么我們可以推斷有1.5萬個請求的耗時小于100ms,也就是說我們有一半的用戶的響應耗時小于100ms,據此我們就可以評估服務響應性能是否可以滿足業務要求。
但是,這個中位值還有另外一個問題,我們只知道還有一半的請求耗時大于100ms,具體是大多少,大200ms,還是500ms,我們無法得知。
P95值與P99值
由于中位值只能反映中位數的問題,不能反饋更多信息,例如,我想知道該服務80%的請求耗時在多少ms以內,這些問題需要額外的數據指標。
P95——響應耗時從小到大排列,順序處于95%位置的值即為P95值。
還是采用上面那個例子,100個請求按照響應時間從小到大排列,位置為95的值,即為P95值。 我們假設該值為180ms,那這個值又表示什么意思呢?
意思是說,我們對95%的用戶的響應耗時在180ms之內,只有5%的用戶的響應耗時大于180ms,據此,我們掌握了更精確的服務響應耗時信息。
P99.9值
亞馬遜經常采用P99.9值,也就是99.9%用戶耗時作為指標,也就是1000個用戶里面,999個用戶的耗時上限,如果測量與優化該值,即可保證絕大多數用戶的使用體驗。 至于P99.99值,優化成本過高,而且服務響應由于網絡波動、系統抖動等不能解決之情況,故暫不考慮該指標。
如何計算P分位值
如上說過平均值的計算方式,而P值需要將響應耗時從小到大排序,然后取得對應百分位之值。
如果服務qps較低,例如:100/秒,記錄這100個耗時數據,然后排序,然后取得P分位值,倒不是難事。 而如果qps較高,例如:30萬/秒,如果還是采用記錄+排序的方式,可以預見需要消耗大量內存與計算資源。
有沒有簡單的計算方式呢?
可以采用直方圖來進行計算,該計算方式雖不是完全準確值,但精度非常高,誤差較小。
直方圖需要界定兩個直方之間的跨度,一般采用等分形式,例如對于耗時統計需求,我們可以假定一個耗時上界,然后等分,比如劃分成100個區間,對于每個響應耗時落入對應的直方,如下圖:
這樣就避免了對全部數據進行排序,只需要根據各個直方中的數據數量,即可計算出95%位置位于哪個直方,然后在該直方內部采用插值方法,計算出P95值。
另外,考慮到數據分布特點,服務耗時異常數據應該只是少數,但是異常值跨度可能很大,大部分耗時數據均靠近正常值,如果直方統計采用等分形式,會導致大量數據堆積在一個直方中,如何解決這個問題?
可以采用非等分的跨度劃分方式,例如采用指數形式劃分,耗時越低的區間,跨度越小,精度約高。
總結
以上是生活随笔為你收集整理的pps服务器未响应_服务响应时间与分布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ dump某个变量_linux内核
- 下一篇: python sub 不区分大小写_Py