日常工作中,我們總是習慣於通過量化的標準去衡量我們對事物的評價,比如美食點評的星級、酒店的星級、每個個人的信用評分等等。而作為乙個 web 工程師,我們也總是在意於我們**的效能,因為**的效能會最直接地影響使用者的體驗。今天要介紹的就是一種同樣能夠幫助工程師對應用效能進行量化評估的標準 —— apdex 。
apdex 定義了應用響應時間的最優門檻為t,另外根據應用響應時間結合 t 定義了三種不同的效能表現:
apdext = (satisfied count + tolerating count / 2) / total samples
其中satisfied count
就是指定取樣時間內響應時間滿足satisfied
要求的應用響應次數;而tolerating count
就是指定取樣時間內響應時間滿足tolerating
要求的應用響應次數;最後的total samples
就是總的取樣次數總數。從公式可以看出,應用的 apdex 得分與取樣持續時間無關,與目標響應時間 t 相關(在採用總數固定的情況下,t 通過影響satisfied count
以及tolerating count
的值間接影響最終的得分)。
舉例來說,假設你的應用期待的響應時間能夠在 1000 ms 內,在 100 次取樣中,有 50 次應用響應時間低於 1000 ms,30 次應用響應時間處於 1000 ms 到 4000 ms( 4 * 1000ms) 之間,剩下 20 次響應時間長於 4000 ms,那麼,該應用在 t = 1000ms 的情況下的 apdex 值為:
(50 + 30 / 2) / 100 = 0.65
其中可以看到應用伺服器在t=0.5s
的情況下得到的 apdex 分數為 0.76,而 browser(browser 更多的是靜態檔案載入) 在t=7s
的情況下得到的 apdex 分數為 0.94。結合兩者可以判斷,目前應用到達終端使用者效能表現比較優秀(0.94,比較接近最大值 1),但是其中影響總體效能的瓶頸則在於伺服器效能(僅僅只有 0.76 分),通過這樣的資料,我們就能知道下一步效能優化的方向了——伺服器端效能優化。
實際上,上面展示的只是 new relic 的一種粒度比較粗的針對整個應用的 apdex 報表,new relic 同樣提供了很多細粒度的 apdex 資料,比如下面展示的針對具體的請求入口的 apdex 報表:
這樣,通過逐步的細化,我們就可以進一步定位效能瓶頸,通過不斷優化 apdex 評分低的入口逐步提公升應用整體效能體驗。
從公式中其實可以非常明顯地看出來,t 值的選擇對於最終的 apdex 值也會有直接影響,越大的 t 值理論上來說會有更大的 apdex 得分。比如我們可以在 new relic 中將應用的 apdex t 值改為 1s,以下是設定過程中看到的原來的值是 0.5s:
而改為 1s 後,跟上面同樣的取樣資料得到的新的平均 apdex 值則高於原來的 0.76。
所以,在對應用效能進行評估的時候,首先需要確保結合應用具體情況設定乙個相對合理的 t 值,太大的 t 值會導致過於樂觀的 apdex 值,但是太小的 t 值又會造成過於嚴苛的效能要求,最終可能導致過度的效能優化。
所以,總而言之,拋棄 t 值談 apdex 得分,都是耍流氓!
apdex 公式計算能夠得到的最大值就是 1,表示應用「可能」能夠令所有使用者對應用效能感到滿意。但是, apdex = 1 可以只是乙個不斷優化的方向,卻不一定是要成為優化的目標,具體根據專案實際情況確定,畢竟,優化本身也需要成本投入,不需要為了極致的效能而投入過多的成本。
wikipedia: apdex
apdex 官網
apdex: measuring user satisfaction
new relic: change your apdex settings
new relic: view your apdex score
文章在我的 blog 上的位址是:
衡量伺服器效能的標準TPC
我們平時買個人電腦時一般會看cpu,記憶體,硬碟,顯示卡,作業系統等一些資訊,但這樣只能有乙個直觀的感覺.沒有乙個統一的標準來衡量這台電腦是好還是壞,價效比高不.不過個人電腦就自己用用,價錢也不貴,也不用太較真.但要買伺服器 server 就不同了,不僅價錢昂貴,而且是很多人用,影響重大,必須得慎重...
衡量伺服器效能的基準測試
1 specweb96測試 spec96是由standard performance evaluation corp提供的 專供檢測伺服器web特性的測試軟體,spec是由著名計算機廠商 系統整合商 大學 研究所 出版商等組成的非贏利性組織。目前,spec得到了包括ibm hp intel comp...
QPS 和併發 如何衡量伺服器端效能
qps 和併發 如何衡量伺服器端效能 和併發相關不得不提的乙個概念就是 qps query per second qps 其實是衡量吞吐量 throughput 的乙個常用指標,就是說伺服器在一秒的時間內處理了多少個請求 我們通常是指 http 請求,顯然數字越大代表伺服器的負荷越高 處理能力越強。...