效能分析之使用者數(執行緒數)/響應時間/TPS的關係

Zee_7D發表於2021-06-24

最近在寫一些東西的時候,把一些內容整理了一下。

在考慮壓力工具中的使用者數(有些工具中稱為執行緒數,本文後續都用“使用者數”來說明)、響應時間、TPS三者之間的關係時,想到之前也有人問起過這樣的問題,就是他們三者之間的共生的關係到底是什麼樣呢。

這個公式我想誰都能知道了:

TPS = ( 1 / RT ) * user  (其中,RT單位是秒,user是使用者數)

 

先來畫一下最簡單的圖(假設前提:每個user的事務定義都是一致的。):

當有五個使用者時,響應時間都穩定保持在0.2s,那這個場景的TPS顯然是:

TPS = (1/0.2)*5 = 25

這是最簡單的計算了。 

(也許你會說:“咳,不對,因為線畫歪了!” 

你過來,我保證揍不死你。)

 

這個看似簡單的公式,在實際的場景中卻是會出現千奇百怪的結果。因為大部分的場景都不會如此規整,例如:

 

這種情況下怎麼計算TPS呢:

TPS = 2 + 4 + 6 + 4 + 1 = 17

顯然響應時間也是變化較大的,可能每個使用者的每個事務的響應時間都是不一樣的。

在真實的場景中,這樣的情況是必然會出現的,所以在計算TPS的時候,壓力工具採用的是:

  1. 先採集原始資料。即每個使用者每個事務都記錄下來。

  2. 再根據粒度計算。TPS散點值 = 事務數 / 粒度

這樣的計算結果再通過曲線表現出來。就會受幾個因素的影響:使用者數、粒度、響應時間。

當粒度過大時,就會平均掉毛刺的影響;當粒度過小時,就會產生過多的事務點,讓人抓狂。 

那到底什麼樣的TPS和響應時間是讓人滿意的呢?像這樣嗎?

響應時間隨使用者數上升而上升,TPS達到上限後變平;

這顯然不是讓人滿意的曲線,因為我們希望的是響應時間不要增加那麼快。

那這樣的曲線呢?

響應時間有增加,但是增加的趨勢並不快,TPS也一直有增加的趨勢,這就顯然系統還有容量的空間,就看效能指標該如何確定了。

 

我們多麼希望這三者的關係像這個圖呀。

響應時間從來沒有增加過,TPS一直在增加,系統效能在測試範圍內沒有衰減。

當然,這是不可能的。

通常情況下,我們都要面對更復雜點的場景。如下圖:

在這個非常簡單的場景下,我們也看到了響應時間無理的跳動。還好幅度並不大。所以才保證了TPS在每個不同的使用者梯度下相對的穩定。但是顯然後面TPS已經達到上限了,響應時間開始增加得非常快。

對於這樣的場景來說,已經算是非常清晰的使用者數、TPS、RT的關係了。

而對於一些這三者關係根本找不到的效能場景,首先要做的就是要把場景判斷清晰,讓曲線變得穩定,再判斷瓶頸,然後才是定位瓶頸及分析根本原因。

想讓曲線變得穩定,就涉及到場景的執行策略了。

遞增使用者和場景的連續性是一定要保證的,只是梯度要根據實際的情況來判斷。

 

今天先聊這麼多,以後碰到有人問類似的問題再接著聊。

 

相關文章