壓測指標

我們經常需要對程序進行壓測,怎么壓才合適?壓到什么樣才說明應用達到了性能瓶頸?用什么指標來衡量才合適?一些指標異常又說明了什么?我們又該怎么樣去查問題?這些都是壓測時我們需要關注的。  
  按照大項劃分,個人將性能指標分為下面幾個大項:

一、基本性能指標 QPS 和 RT

這是測試過程中最基本的指標,也是我們主要需要關注的兩項。QPS 是指系統每秒處理的請求個數(query per second)。RT 指一個請求發出后系統的響應時間(reaction time)。區別下 QPS 和 TPS(Transactions per Second),他倆很像但是不是一個東西。TPS 是指每秒處理的事務數,一個事務是指一個客戶機向服務器發送請求然后服務器做出反應的過程。舉個例子比如某個接口里面有很多項操作,這時往往用 QPS 是不準確的,因為準確來說 QPS 針對的是 Query,是詢問,如單獨的數據庫讀甚至是寫都可以叫一個詢問,但當接口里有多個操作,本質上調用一次產生一次事務,同時里面有許多 Query。所以 QPS 往往會比 TPS 大些。如果針對應用來說我們調用一次內部邏輯又不可見不知道里面有多少操作,這時 TPS 和 QPS 常常區分不開的,建議用 TPS 來衡量好些。
  這里還要提到一個重要概念:最佳線程數量,是指剛好消耗完服務器瓶頸資源的臨界線程數。 最佳線程數和 QPS、RT 是有一定關系的,這個線程數需要在壓測過程中不斷地去調整(一般從小到大來調,剛開始可能10個),努力去接近我們設定預期的性能測試極限。這個線程數和請求量正比關系,但是一定不要認為線程數少請求量就小。一般線程數設置8-10個左右,QPS 就可以達到 500 多了。舉個例子,一個線程一秒內可以發送 N 個請求其實也是固定的,那增加我們的線程個數,比如現在我們有 M 個線程,那每秒理論上可以發 M*N 個請求,不考慮應用瓶頸,那應用每秒 QPS 就可以達到 M*N,當然有瓶頸情況下 QPS 到一定程度就不會再提升了,因為一個應用每秒能處理的請求就那么多,每處理一個請求響應時間 RT 是有限的,當不斷請求過來產生堆積,響應時間上升了,還會導致 QPS 的下降。
  先看看這三者的關系,QPS = 1000*線程數量/RT。QPS 單位是秒,RT 單位是毫秒,所以有一個單位換算分子乘以了1000。QPS 和 RT 成反比,當超過最佳線程數,會導致資源競爭加劇,同時響應時間也會增加,QPS 下降。
  那么問題來了,如何找到最佳線程數?最土但是最實用的方法是,逐步壓測,不斷地調整線程數來觀察系統的負載。

二、數據庫指標

很多應用的瓶頸是在數據庫指標。比如連接數、數據庫的操作監控等等。

三、性能指標

性能指標是針對性能機器的,最佳線程數調整的監控項就是根據這個指標來的。這底下有很多東西,羅列一下:CPU使用率、JVM堆棧使用情況、GC/FGC 次數、Load指標、網絡延時。

3.1 CPU 使用率

一般性能測試指標,CPU 使用率小于 75% 比較合適。通過指令:cat /proc/stat 可以查看。第一行CPU是所有CPU數據總和,CPU0~3表示各個CPU數據。其中第一列為從系統啟動開始累計到當前時間,用戶態的CPU時間(單位:jiffies,1 jiffies = 0.01秒)。

3.2 JVM 堆棧使用情況

對于我們的應用來說,一般會配置 JVM 的,所以對于應用來說,看機器的整體內存是沒有意義的,我們更要關注的是堆棧的使用情況,關注點在已用堆信息。

3.3 GC / FGC 次數

在性能測試過程中不能出現因為FGC 的產生導致響應時間急劇升高的現象,否則壓測是不正確的。盡量保證 FGC 的出現次數是0,如果出現看看它的運行時間,要確保是 FGC 產生運行時間足夠短,否則就可以提Bug了。GC 產生是比較正常的,也要確保它的產生時間保持在比較低的水平。

3.4 Load 指標

Load 是 CPU 的負載,它所包含的信息不是 CPU 的使用率狀況,二是在一段時間內 CPU 正在處理以及等待CPU處理的進程數之和的統計信息,也就是CPU使用隊列的長度的統計信息。一般測試時它的指標是Load<CPU的核數*2。通過指令:cat /proc/loadavg 可以查看。五個數字分別是一分鐘平均負載,5分鐘內平均負載,15分鐘內平均負載,采樣時刻運行隊列的任務數目,系統中活躍任務數目,最大 pid 值(包括線程)。

3.5 網絡延時

常用應用服務器ping數據庫,看看數據庫延時是多少。

四、整體測試指標

RT(Response Time)<= 200ms,根據業務有所不同,只讀的可能小于 10ms。
  Load 服務器負載 <= CPU Core
  CPU <= 75%
  壓測失敗率 <= 0.2%
  此外還要關注下方法耗時。

五、工具

Visual VM

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容