學(xué)AI,好工作 就找北大青鳥(niǎo)
關(guān)注小青 聽(tīng)課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

微博又雙叒叕崩了,且看如何通過(guò)性能測(cè)試保證高可用?

來(lái)源:北大青鳥(niǎo)總部 2021年01月26日 09:51

摘要: 微博又雙叒叕崩了,且看如何通過(guò)性能測(cè)試保證高可用?

隨著國(guó)家衛(wèi)健委發(fā)布消息,“返鄉(xiāng)人員須持七日內(nèi)核酸證明,返鄉(xiāng)后居家健康監(jiān)測(cè)14天,每7天一次核酸檢測(cè)”等嚴(yán)格的防疫措施,打工人們也消停下來(lái),選擇了本地過(guò)年,今年的春運(yùn)似乎也沒(méi)有往年的熱火朝天、如火如荼。然而打工人們卻并不閑,不斷啃著新浪微博一個(gè)又一個(gè)的瓜,鄭爽張恒事件已經(jīng)讓微博的程序員們忙得不可開(kāi)交了,緊接著又來(lái)了網(wǎng)易員工確診陽(yáng)性事件,正準(zhǔn)備著核酸排查、居家隔離,張碧晨華晨宇事件再次把他們推上新一波加班,這次微博又雙叒叕崩了。


經(jīng)過(guò)程序員們加班加點(diǎn),又是擴(kuò)容機(jī)器,又是升級(jí)服務(wù)等錯(cuò)誤,微博恢復(fù)正常了,吃瓜群眾可以繼續(xù)啃瓜了,然而作為互聯(lián)網(wǎng)人,我們更需要考慮,如何避免此類問(wèn)題再次發(fā)生?別等到除夕夜又來(lái)個(gè)**事件,別人在開(kāi)開(kāi)心心吃年夜飯,而互聯(lián)網(wǎng)人依舊在打工。


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


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


了解了系統(tǒng)性能衡量指標(biāo)后,我們?nèi)绾稳フ业竭@些指標(biāo)的值呢?很簡(jiǎn)單,就是性能測(cè)試,具體又可以分為負(fù)載測(cè)試、壓力測(cè)試、穩(wěn)定性測(cè)試。負(fù)載測(cè)試指的是,對(duì)系統(tǒng)不斷增加并發(fā)請(qǐng)求,增加系統(tǒng)的負(fù)載,直到系統(tǒng)的指標(biāo)達(dá)到臨界值。壓力測(cè)試指的是,在超過(guò)系統(tǒng)安全負(fù)載的情況下,繼續(xù)增加壓力,直到系統(tǒng)崩潰,不能再處理任何請(qǐng)求,從而獲得系統(tǒng)的最大承受壓力值。穩(wěn)定性測(cè)試,指的是在一定的壓力下,系統(tǒng)能夠穩(wěn)定運(yùn)行時(shí)間,一般都是做7*24的穩(wěn)定性測(cè)試。



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



那么如何進(jìn)行性能測(cè)試呢?總的來(lái)說(shuō)包含七部分,第一步前期準(zhǔn)備、第二步環(huán)境搭建、第三步開(kāi)發(fā)測(cè)試腳本、第四步準(zhǔn)備測(cè)試數(shù)據(jù)、第五步執(zhí)行測(cè)試、第六步分析結(jié)果與調(diào)優(yōu)、第七步則是反饋跟蹤。


在第一步前期準(zhǔn)備中,我們主要是了解系統(tǒng)、分析需求、建立模型,在了解系統(tǒng)時(shí)主要關(guān)注系統(tǒng)的架構(gòu)、開(kāi)發(fā)語(yǔ)言、部署架構(gòu)、操作系統(tǒng)數(shù)據(jù)庫(kù)中間件參數(shù);在分析需求時(shí)關(guān)注即是否有預(yù)期承載值,測(cè)試目標(biāo)是針對(duì)哪些核心流程、處理多少請(qǐng)求、占用資源要求、響應(yīng)時(shí)間要求;在建立模型時(shí),主要關(guān)注數(shù)據(jù)來(lái)源于數(shù)據(jù)庫(kù)日志或監(jiān)控系統(tǒng)、系統(tǒng)負(fù)載吞吐量、系統(tǒng)壓力高峰時(shí)期分布情況。


在第二步搭建環(huán)境,主要是準(zhǔn)備服務(wù)器環(huán)境、測(cè)試機(jī)環(huán)境,測(cè)試機(jī)用于模擬用戶請(qǐng)求,服務(wù)器環(huán)境用戶模擬業(yè)務(wù)環(huán)境。在第三步開(kāi)發(fā)測(cè)試腳本,主要是選擇對(duì)應(yīng)的測(cè)試工具(如LoadRunner或Jmeter),使用腳本模擬用戶輸入、增加檢查點(diǎn)、增加數(shù)據(jù)收集與驗(yàn)證。


第四步則基于第三步的情況進(jìn)行數(shù)據(jù)生成。第五步則開(kāi)始執(zhí)行測(cè)試,不斷施加壓力,監(jiān)控業(yè)務(wù)系統(tǒng)的操作系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)各個(gè)層面的指標(biāo),比如CPU內(nèi)存磁盤(pán)情況、網(wǎng)絡(luò)發(fā)送接收包數(shù)量等。第六步與第七步,則根據(jù)測(cè)試結(jié)果進(jìn)行分析,不斷調(diào)整、測(cè)試、分析、反饋,直到拿到最終結(jié)果。


快要過(guò)年了,今年的一年也注定是不平凡的一年,誰(shuí)也不知道會(huì)發(fā)生什么,而我們唯一能做好的就是提前做好準(zhǔn)備,未雨綢繆。性能測(cè)試便是最好的手段之一,通過(guò)測(cè)試找出系統(tǒng)瓶頸,提前優(yōu)化,避免系統(tǒng)宕機(jī)、不可用事件又雙叒叕的發(fā)生。


文章來(lái)源:課工場(chǎng)

熱門(mén)班型時(shí)間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計(jì)全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開(kāi)發(fā)全能班 爆滿開(kāi)班
網(wǎng)絡(luò)安全運(yùn)營(yíng)班 爆滿開(kāi)班
報(bào)名優(yōu)惠
免費(fèi)試聽(tīng)
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門(mén)話題 站內(nèi)鏈接