Linux環(huán)境下使用tc工具模擬延時和丟包

前言
在性能測試過程中,我們還需要模擬網(wǎng)絡異常的情況下,是否會出現(xiàn)一些異常數(shù)據(jù)。最常見的就是寫庫操作,比如說我們下單的場景,如果出現(xiàn)網(wǎng)絡異常的時候是否會出現(xiàn)數(shù)據(jù)對不上這種情況。
如我們JMeter發(fā)送成功的請求數(shù)量和最終數(shù)據(jù)庫表中存入下單的數(shù)據(jù)對不上,通常在網(wǎng)絡異常的情況下會出現(xiàn)這種情況,因為通常很多框架都會存在重試的功能,比如APP在向服務端發(fā)送網(wǎng)絡請求,那么在這個請求的過程中網(wǎng)絡不穩(wěn)定,一直沒有得到響應,那么APP會重試,但是出現(xiàn)這種情況下,我們就需要考慮是否會出現(xiàn)重復下單,生成兩筆訂單的情況。通常我們服務端通常會有一定的機制處理這種情況,但是我們需要去測試服務端這種機制是否生效。
tc工具的介紹
通常我們是在應用服務器上使用tc工具模擬網(wǎng)絡丟包。tc工具是工作在服務端的,是專門針對網(wǎng)卡來進行一些相關(guān)的策略的。比如當我們請求傳到網(wǎng)卡的時候,其實這個時候請求還沒有到程序里面,那我們可以在網(wǎng)卡出來的時候加長延時時間或者丟包。
Linux中模擬延時和丟包
在模擬丟包之前,我們現(xiàn)在看一下我們機器的網(wǎng)卡,可以看到我們的網(wǎng)卡是 eth0
然后我現(xiàn)在在本機上ping我們的應用服務器,確認網(wǎng)絡正常。
1、此時我們設置延時,其中 eth0 是我們的網(wǎng)卡名稱,下面的命令實現(xiàn)了給 eth0 口發(fā)包時添加 30ms 的延時。
tc qdisc add dev eth0 root netem delay 30ms
設置延時之后,此時我們可以看到時間已經(jīng)在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%
再看可以發(fā)現(xiàn)已經(jīng)出現(xiàn)丟包的情況了
如果你是通過 SSH 登陸設備進行配置丟包的話,配置完這條命令就會感覺到機器訪問時有點一卡一卡的。這說明,設備已經(jīng)開始丟包了,可以通過具體抓包查看。
其他諸如修改、查看、刪除的命令,都可以參考上面延時的設置。
到此這篇關(guān)于Linux環(huán)境下模擬延時和丟包實現(xiàn)之tc工具的文章就介紹到這了,更多相關(guān)linux模擬延時和丟包tc內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
- 最近遇到一些linux服務器的問題,需要使用到抓包分析。從這篇文章學了一些很實用的技巧。以此記錄2019-07-28
- 這篇文章主要介紹了Linux中tcpdump工具的應用,tcpdump主要用于抓取網(wǎng)絡數(shù)據(jù)包,需要的朋友可以參考下2015-10-28
- 這篇文章主要介紹了Linux補丁工具patch生成使用補丁用法示例,本文講解了它的原理、用法,并舉例說明,需要的朋友可以參考下2015-07-09
- 這篇文章主要介紹了Linux網(wǎng)絡抓包工具tcpdump超級詳解,本文用超長的篇幅講解了tcpdump的方方面,需要的朋友可以參考下2015-06-15