壓力測試
除了網站的品質之外,上線前我們還必須做好甚麼準備呢?
當然,系統本身不能有問題(有問題也不會上線...);在經歷過多所學校的系統上線及替換後,我們有深刻的體驗,功能確認大家都知道,但是上線之後帶來的大量用戶及流量,才是真正的考驗。
我們在使用網站(eg.Moodle 、Canvas),一定也有遇過回應時間很長,網頁開不起來(e.g.轉圈圈)的經驗;究竟是網站問題、瀏覽器或是網路問題?
這類問題常常是每個人的主觀感覺不同,有不同結果;為了找到問題的癥結點,我們可以藉由壓力測試來協助找出。
However, Linux is where most of the stress testing is performed, and where most production deployments are run.
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 這兩個有相關但不同的概念 ;以下來簡單的說明:
Concurrent:以 CPU 的工作為例,Concurrent 主要是一個 CPU 會去做多件事,但是同一個時間點之內只會做一件事,舉例來說一個人可能會去做 Job1、Job2、Job3這三件事,但是在一個時間點內只會做一個 Job,像是早上做 Job1、下午做 Job2、晚上做 Job3不斷的切換。Concurrent 的目標是希望能做更多的事。
Parallel: Parallel 主要是會有多個 CPU 在同一個時間點內會去做多件事,例如會有三個人同時分別在做 Job1、Job2、Job3 的事情。因此 Parallel 的目標是希望能把事情更快速的做完。
希望對大家在服務平台的作業模式有更進一步的認識。
系統在上線前可以做多次壓測,但在線上的系統可就沒這麼好搞定了;您可能只能做一次的壓測,也就這一次要把壓測做好。
另外一個議題是,在多次壓測後,最後的結果一定會非常接近,誤差也就在5%內;如果超過5~10%,通常我們會認為這個系統/環境是不穩定的。