如何干翻你的網(wǎng)絡(luò)?當(dāng)然用它!不走尋常路的運(yùn)維神器 Clumsy
在網(wǎng)絡(luò)運(yùn)維和開(kāi)發(fā)測(cè)試的世界里,有一款工具不走尋常路,別的工具都在努力優(yōu)化網(wǎng)絡(luò),它卻致力于 “搞破壞”,讓網(wǎng)絡(luò)變爛,它就是 Clumsy??蓜e小瞧這個(gè) “搗蛋鬼”,在特定場(chǎng)景下,它可是大有用處。
一、Clumsy是什么?
Clumsy 是一款專(zhuān)為開(kāi)發(fā)者和測(cè)試人員設(shè)計(jì)的弱網(wǎng)測(cè)試工具,主要運(yùn)行在 Windows 系統(tǒng)上。它的核心能力是在本地計(jì)算機(jī)層面模擬各種復(fù)雜且糟糕的網(wǎng)絡(luò)狀況,以此來(lái)測(cè)試應(yīng)用程序在惡劣網(wǎng)絡(luò)環(huán)境下的穩(wěn)定性和性能。
它利用 WinDivert 庫(kù),實(shí)時(shí)攔截系統(tǒng)接收和發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)包,然后可以人為地對(duì)這些數(shù)據(jù)包進(jìn)行延遲、丟包、篡改等操作,再發(fā)送出去。
二、Clumsy 如何讓網(wǎng)絡(luò)變爛
先來(lái)看看它的配置頁(yè)面,你就知道這玩意兒有什么功能了:
- 延遲(Lag):可以把請(qǐng)求緩存一段時(shí)間再發(fā)出,最大能設(shè)置到 3000ms 的延遲。想象一下,你點(diǎn)擊網(wǎng)頁(yè)鏈接,好幾秒后頁(yè)面才開(kāi)始加載,看視頻時(shí)不斷緩沖轉(zhuǎn)圈,這就是 Clumsy 模擬延遲帶來(lái)的效果。
- 丟包(Drop):隨機(jī)丟棄一些請(qǐng)求數(shù)據(jù)包。比如你玩網(wǎng)絡(luò)游戲,突然人物不受控制,原地卡頓,過(guò)一會(huì)兒又瞬移,這很可能就是網(wǎng)絡(luò)丟包導(dǎo)致的,而 Clumsy 就能模擬這種情況。
- 阻塞(Throttle):把一小段時(shí)間內(nèi)的請(qǐng)求攔截下來(lái),然后在同一時(shí)間一股腦發(fā)出去。這就像是本來(lái)有序通過(guò)的車(chē)流,突然被堵在路口,然后又一起放行,網(wǎng)絡(luò)就會(huì)出現(xiàn)瞬間擁堵,導(dǎo)致響應(yīng)變慢。
- 重放(Duplicate):隨機(jī)復(fù)制一些請(qǐng)求,與原請(qǐng)求一起發(fā)送。大量重復(fù)的請(qǐng)求會(huì)占用網(wǎng)絡(luò)帶寬,讓正常的網(wǎng)絡(luò)數(shù)據(jù)傳輸受到干擾。
- 亂序(Out of order):打亂請(qǐng)求的發(fā)送順序。網(wǎng)絡(luò)數(shù)據(jù)就像按順序排列的信件,被 Clumsy 打亂順序后,接收方處理起來(lái)就會(huì)困難重重,導(dǎo)致應(yīng)用程序出現(xiàn)錯(cuò)誤。
- 篡改(Tamper):隨機(jī)修改小部分請(qǐng)求的內(nèi)容。這就好比傳遞的信息被惡意篡改,接收端收到錯(cuò)誤信息,程序就無(wú)法正常運(yùn)行。
三、使用場(chǎng)景舉例
假如你是一名 APP 開(kāi)發(fā)者,想要確保自己開(kāi)發(fā)的 APP 在各種網(wǎng)絡(luò)條件下都能穩(wěn)定運(yùn)行,就可以用 Clumsy 模擬不同程度的網(wǎng)絡(luò)問(wèn)題,看看 APP 是否會(huì)崩潰、數(shù)據(jù)加載是否正常等。又或者你是網(wǎng)絡(luò)工程師,在排查網(wǎng)絡(luò)故障時(shí),懷疑是某些網(wǎng)絡(luò)問(wèn)題導(dǎo)致業(yè)務(wù)異常,通過(guò) Clumsy 模擬相同的網(wǎng)絡(luò)問(wèn)題,就能驗(yàn)證自己的判斷是否正確。
雖然 Clumsy 會(huì)讓網(wǎng)絡(luò)變 “爛”,但正是這種 “爛”,能幫助我們提前發(fā)現(xiàn)網(wǎng)絡(luò)和應(yīng)用程序中的潛在問(wèn)題,讓我們?cè)谡鎸?shí)復(fù)雜的網(wǎng)絡(luò)環(huán)境面前,有備無(wú)患。
四、如何下載并使用 Clumsy
1. 獲取安裝包
可以從 GitHub 倉(cāng)庫(kù)進(jìn)行下載,地址:https://jagt.github.io/clumsy/download.html
2. 解壓安裝
下載完成后,創(chuàng)建一個(gè)文件夾,將壓縮包解壓到該文件夾中即可完成安裝使用,無(wú)需復(fù)雜的安裝步驟。