最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用Fiddler模擬惡劣網絡環(huán)境

 更新時間:2023年05月11日 09:58:53   作者:百度眾測  
這篇文章主要介紹了如何利用Fiddler模擬惡劣網絡環(huán)境問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

在解決日常的支持需求中,經常會遇到一些用戶反饋一些無法簡單復現(xiàn)的bug,有很大一部分的bug是由于用戶自身的網絡環(huán)境波動,或者是本身網絡環(huán)境就較為惡劣,而服務在面對這種惡劣的網絡環(huán)境的健壯性不夠,導致會出現(xiàn)一些意想不到的bug。而在正常的開發(fā)自測過程中很難去營造出這種惡劣的網絡環(huán)境,使得這些bug較難被提前發(fā)現(xiàn)和修復。

另外一些服務在惡劣網絡環(huán)境下雖然不會出現(xiàn)不可用的情況,但是用戶體檢很差,為了優(yōu)化這個情況下的用戶體驗,也需要去在本地模擬這種環(huán)境來進行調優(yōu)。

所以要去復現(xiàn)這些bug,甚至是去提前發(fā)現(xiàn)這些bug,就需要能夠在開發(fā)環(huán)境中模擬出惡劣的網絡環(huán)境,從而看到在這種惡劣的網絡環(huán)境下的服務的表現(xiàn)等。

當前模擬惡劣網絡環(huán)境主要可以通過以下這些手段實現(xiàn):

  • 通過應用層或者傳輸層的代理服務器,通過在代理服務器上設置一些模擬惡劣網絡環(huán)境的參數(shù),使得通過這些代理服務器的流量都被轉化為惡劣網絡環(huán)境下的流量。如利用Fiddler,Charles等具有代理服務器功能的網絡流量分析軟件來實現(xiàn)。
  • 通過利用一些更底層的驅動層面的服務,通過控制網卡的收包發(fā)包的行為,來模擬惡劣的網絡環(huán)境。如dummynet的ipfw驅動等。
  • 通過建立一個可控的網關,在網關上部署模擬惡劣環(huán)境的相關程序,所有需要借助該網關進行轉發(fā)的流量都會被模擬為惡劣網絡條件。Linux下的netem就提供了這類支持。

通過應用層或者傳輸層的代理服務器,通過在代理服務器上設置一些模擬惡劣網絡環(huán)境的參數(shù),使得通過這些代理服務器的流量都被轉化為惡劣網絡環(huán)境下的流量。

如利用Fiddler,Charles等具有代理服務器功能的網絡流量分析軟件來實現(xiàn)。通過利用一些更底層的驅動層面的服務,通過控制網卡的收包發(fā)包的行為,來模擬惡劣的網絡環(huán)境。

如dummynet的ipfw驅動等。通過建立一個可控的網關,在網關上部署模擬惡劣環(huán)境的相關程序,所有需要借助該網關進行轉發(fā)的流量都會被模擬為惡劣網絡條件。

Linux下的netem就提供了這類支持。

這里主要先講的是第一種手段,即利用Fiddler來模擬惡劣的網絡環(huán)境,對服務進行測試,這個手段實現(xiàn)簡單,較為直觀,但是缺點是只能支持那些利用HTTP進行通信和交互的服務。在之后的文章中也會進一步說一下后兩種手段。

Fiddler是啥

Fiddler的官網上是這樣描述它自己的:The free web debugging proxy for any browser, system or platform,即跨瀏覽器、跨系統(tǒng)、跨平臺的免費Web Debug代理服務器。

當你的HTTP瀏覽經過Fiddler時,F(xiàn)iddler可以監(jiān)視流量,查看HTTP通訊的各種信息,設置斷點查看和修改HTTP數(shù)據(jù),甚至可以構造各種測試用的HTTP包以及重放已記錄的包等。

其官網是http://www.fiddler2.com/fiddler2/,上面詳細地介紹了Fiddler到底是什么。

簡單地利用Fiddler限速模擬惡劣網絡環(huán)境

Fiddler本身已經預置提供了模擬Modem速度的選項,其位置位于:

Rules – Performances – Simulate Modem Speeds

Fidder界面

  

勾選該選項后,所有通過Fiddler代理的流量都會變得和多年前的56k小貓時上網一般的慢。  

由于Fiddler只是一個HTTP代理,要直觀地看出限速效果,最好是運行在瀏覽器中的測速工具,這里選用speedtest.net提供的測速工具進行測試。  

首先是開啟該選項之前的速度:

開啟前速度

打開了Simulate Modem Speeds后:

開啟后速度

速度已經回到了當年那種無法忍受的低速了,注意到這里PING值也有了顯著的提高,而事實上ping值是ICMP層的控制報文,并不會被Fiddler影響,理論上ping值并不會出現(xiàn)提高的情況,進一步分析Fiddler中的報文則可以看出端倪:

端倪

事實上網頁插件并不能實現(xiàn)發(fā)送ICMP包并得到ping值的功能,而是用多次較小的HTTP GET請求的響應時間來計算PING值,這里實際算出來的是一個平均的HTTP的RTT值,所以受到Fiddler模擬惡劣環(huán)境的影響就是正常的了。

調整模擬惡劣網絡環(huán)境的參數(shù)

直接模擬Modem速度實在是慢爆了,事實上就算是在很差信號的情況下,手機移動網絡的速度都已經超過了當年的56k Modem速度了,所以采用默認的配置模擬出來的環(huán)境過于惡劣,并不一定符合需求,此時就需要對限速的參數(shù)進行調整。  

Fiddler本身就提供了一個配置文件供調整這些參數(shù),點擊:  

Rules – Customize Rules…  

就會用文本編輯器打開CustomRules.js文件,其默認位于用戶目錄的文檔目錄下的\Fiddler2\Scripts 位置,后綴名是js,其內容實質是JScript.NET——微軟對ECMAScript規(guī)范的實現(xiàn),與日常使用的javascript是屬于同一個規(guī)范下的,但是在擴展的細節(jié)實現(xiàn)存在一定的不同。  

打開該文件后,可以找到一個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"
}

該標志位控制著oSession的兩個參數(shù)值的設置,當勾選了Simulate Modem Speeds時,request-trickle-delay與response-trickle-delay就會被設置,其中request-trickle-delay中的值代表每KB的數(shù)據(jù)被上傳時會被延時多少毫秒,response-trickle-delay則對應下載時每KB的數(shù)據(jù)會被延時多少毫秒,如果本身網速已經相當快的話,這里設置的值就可以近似地推算出開啟模擬后的上傳和下載帶寬了,比如默認設置下下載延時為150ms,上傳延時為300ms,對應可以推算出大致的模擬帶寬為:

上傳帶寬=(1*8/1000)/0.300≈0.053Mbps

下載帶寬=(1*8/1000)/0.150≈0.027Mbps

然而實際情況下卻得到了兩倍于這個值的帶寬,推測可能是Fiddler的內部實現(xiàn)上有一些和描述上的不同,為何為造成這個現(xiàn)象現(xiàn)在還不是很清楚,所以上述公式最后還需要修正一個2.0的系數(shù),即:

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

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

假設我們將兩個參數(shù)都設置為50,則會得到上下載帶寬均為0.32Mbps,測速結果如下所示:

設置參數(shù)以后的測速結果

編寫自定義腳本

進一步地,我們可以擴展CustomRules.js里的邏輯,參照Jscript的文檔可以在模擬惡劣環(huán)境中加入更多自定義的邏輯,這里實現(xiàn)了一個隨機延時量設置,使得網絡帶寬不是恒定為一個低速的值,而是會在一定范圍內隨機抖動:

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(1,50);
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = ""+randInt(1,50);
}

得到的測試結果如下:

得到的測試結果

在測速過程中的瞬時速度的趨勢圖如下:

瞬時速度趨勢圖

可以看到整體的網絡限速存在了一定程度的抖動。

通過進一步擴展CustionRules.js可以實現(xiàn)很多需要的惡劣環(huán)境模擬場景,如果場景較為復雜的話,也可以通過編寫Fiddler的插件的方式,編寫C#插件代碼來進一步控制Fiddler的行為,在這里就不多做贅述了。

詳細可以參照:http://docs.telerik.com/fiddler/extend-fiddler/extendwithdotnet

Fiddler模擬惡劣網絡環(huán)境的局限性

Fiddler進行限速較為簡單和靈活,配置也較為方便,但是由于它是一個應用層的HTTP的代理,只能模擬該層上的行為,對于一些復雜的網絡層的丟包、重傳等惡劣情況就不能很好的模擬出來,而且對于其他協(xié)議的應用也不支持,后續(xù)會介紹一些其他的模擬惡劣環(huán)境的方法和軟件來彌補這些缺失。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Keras搭建Efficientdet目標檢測平臺的實現(xiàn)思路

    Keras搭建Efficientdet目標檢測平臺的實現(xiàn)思路

    EfficientNet模型具有很獨特的特點,這個特點是參考其它優(yōu)秀神經網絡設計出來的,本文以Efficientnet-B0和Efficientdet-D0為例,進行Efficientdet的解析,感興趣的朋友一起看看吧
    2021-06-06
  • 使用DeepSeek搭建個人知識庫(在筆記本電腦上)

    使用DeepSeek搭建個人知識庫(在筆記本電腦上)

    本文介紹了如何在筆記本電腦上使用DeepSeek和開源工具搭建個人知識庫,通過安裝DeepSeek和RAGFlow,并使用CherryStudio進行交互,可以實現(xiàn)本地文檔的解析和知識問答,雖然個人配置可以運行,但在企業(yè)商用時,需要考慮配置升級和數(shù)據(jù)集質量的問題,感興趣的朋友一起看看吧
    2025-03-03
  • iisschlp.wsc [88,25] 屬性值無效 : progid

    iisschlp.wsc [88,25] 屬性值無效 : progid

    今天在運行iisapp.vbs時候提示Windows Script Component - file://C:WINDOWSsystem32iisschlp.wsc [88,25] 屬性值無效 : progid,原來是因為安全設置惹的禍,以前就是因為這個一直沒解決
    2014-07-07
  • 2022最新騰訊輕量云?debian?10?安裝pve教程詳解

    2022最新騰訊輕量云?debian?10?安裝pve教程詳解

    這篇文章主要介紹了騰訊輕量云?debian?10?安裝pve教程?2022,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • Minio設置文件鏈接永久有效的完整步驟

    Minio設置文件鏈接永久有效的完整步驟

    大家應該都知道m(xù)inio分享文件的鏈接最多支持分享七天,而最近遇到了一個需求要求設置永久可下載,這篇文章主要給大家介紹了關于Minio設置文件鏈接永久有效的相關資料
    2022-07-07
  • Runnable.com 在線測試代碼片分享網站

    Runnable.com 在線測試代碼片分享網站

    Runnable是一個一站式的代碼片段集合網站,你不僅可以搜索代碼,還可以編輯、運行這些代碼片段,以確保它們的正確性與可用性
    2013-12-12
  • Hive?判斷某個字段長度的示例代碼

    Hive?判斷某個字段長度的示例代碼

    hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,用來進行數(shù)據(jù)提取、轉化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機制,這篇文章主要介紹了Hive?判斷某個字段長度,需要的朋友可以參考下
    2024-08-08
  • 程序員 代碼是從頭編還是使用框架好呢?

    程序員 代碼是從頭編還是使用框架好呢?

    為什么框架發(fā)展得越來越好,因為越來越多的程序員選擇使用框架。當處于實際的項目開發(fā)中,程序員就會發(fā)現(xiàn)項目周期短,使用框架可以最有效地節(jié)約時間。如果完全從頭開始編程,使用時間太多不說,對程序員的個人編碼水平也提出了很高的要求
    2017-08-08
  • skynet.call使用詳細解析

    skynet.call使用詳細解析

    這篇文章主要介紹了skynet.call使用詳細解析,本文給大家介紹的非常詳細對大家的學習或工作具有一定的參考借鑒價值,感興趣的朋友一起看看吧
    2025-04-04
  • 趣談Unicode、Ascii、utf-8、GB2312、GBK等編碼知識

    趣談Unicode、Ascii、utf-8、GB2312、GBK等編碼知識

    這篇文章主要介紹了趣談Unicode、Ascii、utf-8、GB2312、GBK等編碼知識,文章寫的詼諧風趣,膜拜啊,需要的朋友可以參考下
    2014-07-07

最新評論

堆龙德庆县| 无棣县| 朝阳市| 河源市| 岑溪市| 澳门| 天水市| 内丘县| 柘城县| 紫金县| 辽宁省| 屯昌县| 邓州市| 抚松县| 临潭县| 泗阳县| 伊金霍洛旗| 忻城县| 太仆寺旗| 石泉县| 永安市| 福鼎市| 涟源市| 清镇市| 襄樊市| 修文县| 湛江市| 司法| 岗巴县| 广东省| 黔西| 汤原县| 龙州县| 廊坊市| 佛冈县| 静宁县| 惠安县| 揭阳市| 余庆县| 绥阳县| 南溪县|