壓力測試

除了網站的品質之外,上線前我們還必須做好甚麼準備呢?

當然,系統本身不能有問題(有問題也不會上線...);在經歷過多所學校的系統上線及替換後,我們有深刻的體驗,功能確認大家都知道,但是上線之後帶來的大量用戶及流量,才是真正的考驗。

我們在使用網站(eg.Moodle 、Canvas),一定也有遇過回應很長,轉圈圈,網頁開不起來的經驗;究竟是網站問題或是網路問題?

為了找到問題的癥結點,我們可以藉由壓力測試來協助。

LoadTest for LMS

壓力測試

在系統上線後,除了系統提供的服務外,另外一個需要注意的是系統能夠提供多少人同時使用?

可提供多少人數的服務,一直是重要的議題;我們尋找科學的方法,來確定系統服務人數,就是壓力測試。

壓力測試是平台品質管理的一環,為協助確保平台服務品質;以平台現有軟硬體設備及網路環境,進行平台壓力測試。 

進行多人同時上線之測試,測試用戶使用過程中的平台回應及負荷情形,全程記錄並統計,完成報告文件。

主機即時流量監控

主機即時流量監控圖
記憶體即時用量監控圖

參考結果

結果圖表

多次壓測

對系統是必要的,我們會建議對系統作多次壓測,多次進行負載測試以驗證一致性,也就是說多次壓測的結果,你會發現結果會趨於一致 - 一致性。

同時上線人數

在支援最高效能工作負載,另一個概念是 - 同時上線人數;這裡有篇文章不錯。

Concurrent Users are not Simultaneous Users

這句話翻譯成中文,反而會很難解釋。
因為 Concurrent 、Simultaneous 都是 "同時",所以要從英文原義去理解,我們google 到另一段:

Concurrently implies coordination while simultaneously simply means at the same time.

重點在: coordination 協調這個字。

我覺得原文解釋的最好:

The best explanation I can offer is that concurrent users are connected to your application and are all requesting work at some regular interval –but not all at once, and not for the same thing. Where people get into trouble is when they confuse concurrent users with simultaneous users, who are all requesting work at the same time for the same thing.

同時上線(人數):

我們提供一定數量的用戶人數連線使用系統(這些連線是固定間隔的連上系統),我們稱為 同時上線人數。決不是一次(once)性。

多主機/分散式壓力測試

壓力測試也可以是分散式架構,事實上這樣的作法,在大用量站台還需要更多台協助測試;壓測機多台會導致幾個問題,壓測計劃的執行、分配、控制樣本及最終也是最重要的數據搜集。如何做?一張圖就能解釋:


Read more: Concurrent 和 Parallel 之間的差別

在提到上述壓測的觀念時,就不得不提到 Concurrent 和 Parallel 這兩個有相關但不同的概念 ;以下來簡單的說明:

希望對大家在服務平台的作業模式有更進一步的認識。

系統在上線前可以做多次壓測,但在線上的系統可就沒這麼好搞定了;您可能只能做一次的壓測,也就這一次要把壓測做好。


另外一個議題是,在多次壓測後,最後的結果一定會非常接近,誤差也就在5%內;如果超過5~10%,通常我們會認為這個系統/環境是不穩定的。