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

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