性能测试 Linux 环境下模拟延时和丢包实现

在性能测试过程中,我们还需要模拟网络异常的情况下,是否会出现一些异常数据。最常见的就是写库操作,比如说我们下单的场景,如果出现网络异常的时候是否会出现数据对不上这种情况。

如我们JMeter发送成功的请求数量和最终数据库表中存入下单的数据对不上,通常在网络异常的情况下会出现这种情况,因为通常很多框架都会存在重试的功能,比如APP在向服务端发送网络请求,那么在这个请求的过程中网络不稳定,一直没有得到响应,那么APP会重试,但是出现这种情况下,我们就需要考虑是否会出现重复下单,生成两笔订单的情况。

通常我们服务端通常会有一定的机制处理这种情况,但是我们需要去测试服务端这种机制是否生效。

tc工具的介绍

通常我们是在应用服务器上使用tc工具模拟网络丢包。tc工具是工作在服务端的,是专门针对网卡来进行一些相关的策略的。比如当我们请求传到网卡的时候,其实这个时候请求还没有到程序里面,那我们可以在网卡出来的时候加长延时时间或者丢包。

Linux中模拟延时和丢包

在模拟丢包之前,我们现在看一下我们机器的网卡,可以看到我们的网卡是eth0

性能测试 Linux 环境下模拟延时和丢包实现_第1张图片

性能测试 Linux 环境下模拟延时和丢包实现_第2张图片

如果你想学习性能测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接性能测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386     

15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!_哔哩哔哩_bilibili15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!共计27条视频,包括:1.【性能测试】什么是性能测试以及性能测试的价值和目的、2.【性能测试】真实企业性能测试指标详解以及指标测算、3.【性能测试】真实企业中性能测试流程以及细节剖析等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1B14y1D7X9/?spm_id_from=333.337.search-card.all.click

 然后我现在在本机上ping我们的应用服务器,确认网络正常。

性能测试 Linux 环境下模拟延时和丢包实现_第3张图片

性能测试 Linux 环境下模拟延时和丢包实现_第4张图片

设置延时

1、此时我们设置延时,其中eth0 是我们的网卡名称,下面的命令实现了给 eth0 口发包时添加 30ms 的延时。


tc qdisc add dev eth0 root netem delay 30ms

设置延时之后,此时我们可以看到时间已经在40ms左右了

性能测试 Linux 环境下模拟延时和丢包实现_第5张图片

 2、显示延时的设置

图片

 3、修改延时

tc qdisc change dev eth0 root netem delay 40ms

性能测试 Linux 环境下模拟延时和丢包实现_第6张图片

4、删除延时配置

tc qdisc del dev eth0 root netem delay 40ms

 可以看到删除延时之后,时间又恢复在10ms左右了

性能测试 Linux 环境下模拟延时和丢包实现_第7张图片

 

模拟丢包

1、设置丢包

tc qdisc add dev eth0 root netem loss 10%

再看可以发现已经出现丢包的情况了

性能测试 Linux 环境下模拟延时和丢包实现_第8张图片

 如果你是通过SSH 登陆设备进行配置丢包的话,配置完这条命令就会感觉到机器访问时有点一卡一卡的。这说明,设备已经开始丢包了,可以通过具体抓包查看。

其他诸如修改、查看、删除的命令,都可以参考上面延时的设置。

你可能感兴趣的:(linux,服务器,自动化,设计模式,单元测试,单例模式,python)