fiddler之弱網設置(模擬限速)

背景

我們的產品在弱網環境下經常出現加載問題,影響用戶體驗甚至服務不可用。所以在測試過程中就需要模擬弱網絡環境進行測試、問題復現,讓開發調優

fiddler模擬弱網環境

設置

打開fiddler,默認情況下Rules->Performance->Simulate Modem Speeds是未勾選狀態,此時網絡正常。當選中此選項後,網速就會變慢,打開網頁就會加載很久,這樣就實現了弱網效果。

 

設置.png

備註:如果想了解(上傳/下載)網速具體數值,可以訪問http://www.speedtest.cn/網站,進行測試

限速原理

Fiddler限速是以網絡延遲的方式實現的,網絡延遲時間*網速=傳輸字節數

點擊Rules – Customize Rules(快捷鍵Ctrl + R)打開Fiddler ScriptEditor,或者直接點開右側主頁籤的FiddlerScript。

 

打開Script方式1.png

 

打開Scrip方式2.png

 

打開該文件後,Ctrl + F 查找m_SimulateModem標誌位,可以看到如下代碼

 

 if (m_SimulateModem) {
            // Delay sends by 300ms per KB uploaded.
            oSession["request-trickle-delay"] = "300"; 
            // Delay receives by 150ms per KB downloaded.
            oSession["response-trickle-delay"] = "150"; 
        }

註釋說明:
request-trickle-delay中的值代表每KB的數據被上傳時會被延時多少毫秒;
response-trickle-delay則對應下載時每KB的數據會被延時多少毫秒。
比如你要模擬上傳速度100KBps的網絡,那上傳延遲就是1KB/100KBps=0.01s=10ms,就改成10
默認設置下上傳延時爲300ms下載延時爲150ms,大致模擬出來的寬帶如下:

 

上傳帶寬 = 1KB/300ms = (1 * 8/1000) /0.300 ≈  0.027Mbps
下載帶寬 = 1KB/150ms = (1 * 8/1000) /0.150 ≈ 0.053Mbps
(1MB = 1024 KB ≈ 1000 KB 爲了運算簡便就用了1000的倍數,忽略誤差)

實際帶寬是在計算所得的基礎上乘2,至於原因,沒有深究

 

上傳帶寬=((1*8/1000)/0.300)*2.0≈0.106Mbps 
下載帶寬=((1*8/1000)/0.150)*2.0≈0.053Mbps

假如我們要模擬2M左右的寬帶((1* 8/1000)/ x )*2.0=2

 

if (m_SimulateModem) {
   // Delay sends by 300ms per KB uploaded.
   oSession["request-trickle-delay"] = "8";
   // Delay receives by 150ms per KB downloaded.
   oSession["response-trickle-delay"] = "8";

設置網絡環境參數
1、查找到if (m_SimulateModem)語句,修改代碼。模擬網絡帶寬不是恆定的一個低速的值,而是一定範圍內隨機抖動,下面的腳本實現了一個隨機延時量設置,使得網絡帶寬不是恆定爲一個低速的值。

 

static function randInt(min, max) {
    return Math.round(Math.random()*(max-min)+min);
}
if (m_SimulateModem) {
    // Delay sends by 300ms per KB uploaded.
    oSession["request-trickle-delay"] = ""+randInt(100,200);
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = ""+randInt(1,50);
}

2、在代碼裏找到onBeforeRequest,這裏定義了在發送請求前做什麼。加入如下代碼可以實現延遲:

 

oSession["request-trickle-delay"]="3000";  //請求階段延遲3秒
oSession["response-trickle-delay"]="3000";  //響應階段延遲3秒

添加代碼.png

 

備註:每次編輯並保存配置文件後,Simulate Modem Speeds選項會被取消,需要重新勾選。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章