網站壓力測試,到底測的是什麼?

在進行網站壓力測試時,最重要的是先搞清楚「目標」是什麼?你可能會想,不就是測「壓力」嗎?給他超大壓力,然後讓網站掛掉,就知道能承受多少壓力了嗎?

事實上,網站壓力測試不僅要知道系統的耐壓程度,另外還有一個很重要的測試標的是「網站穩定性」。

我們公司前幾天就正在對一個客戶的網站做壓力測試,因為這次網站從去年就已經上線,同樣的程式在去年已經進行過壓力測試,也非常順利的通過同時數千人連線的考驗,今年客戶委託我們做出一些功能調整並改版上線,在上線之前我們又再次進行壓力測試,這次不一樣的是,雖然壓力測試都通過驗證,數據也很漂亮,不過當我們以同時上線人數 1,500 人的情況下連續測試 10 分鐘,就在第 6 分鐘時開始發生程式錯誤,有時找不到網頁、有時引發 HTTP 500 Server Error 錯誤,非常的詭異,經程式開發人員的調整下發現原來是 web.config 沒有設定正確的 <machineKey> 導致壓測過程的狀態在一段時間後引發資料同步問題,這並不是單純測試壓力就能看的出來的,「時間」也是一個非常重要的穩定性因子。

除此之外,網站壓力測試還需要訂定出性能指標,當然客戶可以用他們自己的角度來定義,但網站的人數多寡並不是用「喊」的,你還是必須先透過實際的數據進行分析,分析出網站在最尖峰的時刻有多少人上線,網站伺服器有多少同時的連線與要求,最長的回應時間有多少,這些都必須從各個設備收集數據並分析瞭解後才能做出判斷,否則盲目的定義壓測目標,只會讓事情難以進行而已。

另一種常見的情況是,客戶可能會直接拿其他網站的性能指標來用,由於每個網站的需求不同、架構不同、用戶的屬性不同、可能連同時上線人數的需求都不太一樣,直接用其他網站的性能目標會讓網站開發團隊十分受傷,因為很有可能這網站永遠達不到性能目標。

所以,網站壓力測試測的是:

  • 網站耐壓程度
    • 在一定時間內不斷加壓,同時收錄/分析壓測過程中所有設備的效能數據,當任何一個設備發生效能瓶頸時,就是這個網站的效能極限(效能臨界值),並不是網站或資料庫主機掛了才叫「最大極限」。
  • 網站穩定度
    • 在效能臨界值的壓力下,施以一定時間的壓力測試,例如:10 分鐘、1 小時、2 小時等。
    • 在一定時間內如果網站主機還能夠穩定的提供服務,才能代表這個網站經的起長時間的效能考驗。
    • 在網站穩定度不佳的情況下,有時候我們會看到網站程式有記憶體洩漏(Memory Leaks)的問題,在長時間的壓力測試下由於記憶體不會被釋放,所以也會導致網站掛掉,這時就可以針對這些不容易發現的問題進行處理。
  • 網站性能指標
    • 有時候我們會定義網站壓力測試的性能指標是每個頁面的回應時間在特定大量下必須在幾秒內回應,這些是性能指標,必須透過量化數據來改善問題,千萬不要用感覺來分析問題。
    • 這項指標最常見的謬誤就是,網頁呈現的速度慢,但伺服器與資料庫的負載都很輕,怎樣調整效能都無法改善,所以就算壓力測試報表數據很漂亮,但客戶還是不能接受的情況。事實上,壓力測試工具都無法幫你測試出網站實際在瀏覽器呈現網頁的效能,這部份屬於「前端程式開發與調校」,必須由網站前端工程師進一步做調校才能改善。



來訪數: (1016)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *