學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

微博為什么總在“崩”?且看如何通過性能測試保證高可用?

來源:北大青鳥總部 2023年09月04日 09:57

摘要: 微博崩了的原因,很簡單,就是訪問請求超過了系統(tǒng)負載,在同一秒有巨量的用戶請求過來,而服務器來不及響應,被請求打爆了,因此崩潰了。修復的措施也很簡單,即通過增加服務器數量,讓服務器可以處理更多的用戶請求。

一有“大瓜”出現,微博服務器便岌岌可危,到底是什么造成了微博崩潰,又該怎樣避免?

微博崩了的原因,很簡單,就是訪問請求超過了系統(tǒng)負載,在同一秒有巨量的用戶請求過來,而服務器來不及響應,被請求打爆了,因此崩潰了。修復的措施也很簡單,即通過增加服務器數量,讓服務器可以處理更多的用戶請求。那么如何衡量系統(tǒng)的性能呢?我們一般用這三個指標,響應時間、并發(fā)數、吞吐量來衡量系統(tǒng)性能。

響應時間,即請求發(fā)出到收到響應的時間,一般情況下,這個值都非常非常非常的小,微秒或毫秒級別,正常的網頁請求時間一般在2s以內,超過2s之后,用戶體驗就不佳了,超過20s,用戶無可忍耐,選擇離開,因此響應時間是非常重要的指標。并發(fā)數,指的是同一時間能處理的用戶請求數量。吞吐量,指的是單位時間能夠處理的請求數,體現的是系統(tǒng)整體處理能力,比如每秒請求數HPS、每秒事務數TPS、每秒查詢數QPS。

了解了系統(tǒng)性能衡量指標后,我們如何去找到這些指標的值呢?很簡單,就是性能測試,具體又可以分為負載測試、壓力測試、穩(wěn)定性測試。負載測試指的是,對系統(tǒng)不斷的增加并發(fā)請求,增加系統(tǒng)的負載,直到系統(tǒng)的指標達到臨界值。壓力測試指的是,在超過系統(tǒng)安全負載的情況下,繼續(xù)增加壓力,直到系統(tǒng)崩潰,不能再處理任何請求,從而獲得系統(tǒng)的最大承受壓力值。穩(wěn)定性測試,指的是在一定的壓力下,系統(tǒng)能夠穩(wěn)定的運行時間,一般都是做7*24的穩(wěn)定性測試。



一般來說,系統(tǒng)大部分時間都處于ab區(qū)間,當發(fā)生一些大事件時,系統(tǒng)的請求會增多,從ab區(qū)間變?yōu)閎c區(qū)間,而爆炸性事件,則直接讓系統(tǒng)的請求巨量增加,從bc區(qū)間變?yōu)閏d區(qū)間,從圖中我們也可以看到,在cd的時候,系統(tǒng)能處理的請求已經很少了,逐漸走向崩潰的邊緣,在d點徹底崩潰。而通過性能測試,我們能找到系統(tǒng)的b、c、d點,提前做好應對措施,比如返回上一級頁面,又或者是增加服務器數量等等。



那么如何進行性能測試呢?總的來說包含7部分,第一步前期準備、第二步環(huán)境搭建、第三步開發(fā)測試腳本、第四步準備測試數據、第五步執(zhí)行測試、第六步分析結果與調優(yōu)、第七步則是反饋跟蹤。在第一步前期準備中,我們主要是了解系統(tǒng)、分析需求、建立模型,在了解系統(tǒng)時主要關注系統(tǒng)的架構、開發(fā)語言、部署架構、操作系統(tǒng)數據庫中間件參數;在分析需求時關注即是否有預期承載值,測試目標是針對哪些核心流程、處理多少請求、占用資源要求、響應時間要求;在建立模型時,主要關注數據來源于數據庫日志或監(jiān)控系統(tǒng)、系統(tǒng)負載吞吐量、系統(tǒng)壓力高峰時期分布情況。在第二步搭建環(huán)境,主要是準備服務器環(huán)境、測試機環(huán)境,測試機用于模擬用戶請求,服務器環(huán)境用戶模擬業(yè)務環(huán)境。在第三步開發(fā)測試腳本,主要是選擇對應的測試工具(如LoadRunner或Jmeter),使用腳本模擬用戶輸入、增加檢查點、增加數據收集與驗證。第四步則基于第三步的情況進行數據生成。第五步則開始執(zhí)行測試,不斷施加壓力,監(jiān)控業(yè)務系統(tǒng)的操作系統(tǒng)、網絡、數據庫各個層面的指標,比如CPU內存磁盤情況、網絡發(fā)送接收包數量等。第六步與第七步,則根據測試結果進行分析,不斷調整、測試、分析、反饋,直到拿到最終結果。

性能測試是最好的手段之一,通過測試找出系統(tǒng)瓶頸,提前優(yōu)化,避免系統(tǒng)宕機、不可用事件又雙叒叕的發(fā)生。


熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應用線上班 即將爆滿
UI設計全能班 即將爆滿
數據分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網絡安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內鏈接