Linux環境下使用tc工具模擬延時和丟包

前言

在性能測試過程中,我們還需要模擬網絡異常的情況下,是否會出現一些異常數據。最常見的就是寫庫操作,比如說我們下單的場景,如果出現網絡異常的時候是否會出現數據對不上這種情況。

如我們JMeter發送成功的請求數量和最終數據庫表中存入下單的數據對不上,通常在網絡異常的情況下會出現這種情況,因為通常很多框架都會存在重試的功能,比如APP在向服務端發送網絡請求,那麼在這個請求的過程中網絡不穩定,一直沒有得到響應,那麼APP會重試,但是出現這種情況下,我們就需要考慮是否會出現重復下單,生成兩筆訂單的情況。通常我們服務端通常會有一定的機制處理這種情況,但是我們需要去測試服務端這種機制是否生效。

tc工具的介紹

通常我們是在應用服務器上使用tc工具模擬網絡丟包。tc工具是工作在服務端的,是專門針對網卡來進行一些相關的策略的。比如當我們請求傳到網卡的時候,其實這個時候請求還沒有到程序裡面,那我們可以在網卡出來的時候加長延時時間或者丟包。

Linux中模擬延時和丟包

在模擬丟包之前,我們現在看一下我們機器的網卡,可以看到我們的網卡是 eth0

在這裡插入圖片描述

然後我現在在本機上ping我們的應用服務器,確認網絡正常。

在這裡插入圖片描述

1、此時我們設置延時,其中 eth0 是我們的網卡名稱,下面的命令實現瞭給 eth0 口發包時添加 30ms 的延時。

tc qdisc add dev eth0 root netem delay 30ms

設置延時之後,此時我們可以看到時間已經在40ms左右瞭。

在這裡插入圖片描述

2、顯示延時的設置

在這裡插入圖片描述

3、修改延時

tc qdisc change dev eth0 root netem delay 40ms

在這裡插入圖片描述

4、刪除延時配置

tc qdisc del dev eth0 root netem delay 40ms

可以看到刪除延時之後,時間有恢復在10ms左右瞭。

在這裡插入圖片描述

模擬丟包

1、設置丟包

tc qdisc add dev eth0 root netem loss 10%

再看可以發現已經出現丟包的情況瞭

在這裡插入圖片描述

如果你是通過 SSH 登陸設備進行配置丟包的話,配置完這條命令就會感覺到機器訪問時有點一卡一卡的。這說明,設備已經開始丟包瞭,可以通過具體抓包查看。

其他諸如修改、查看、刪除的命令,都可以參考上面延時的設置。

到此這篇關於Linux環境下模擬延時和丟包實現之tc工具的文章就介紹到這瞭,更多相關linux模擬延時和丟包tc內容請搜索GuideAH以前的文章或繼續瀏覽下面的相關文章,希望大傢以後多多支持GuideAH!

閱讀更多: