网易首页 > 网易号 > 正文 申请入驻

在 Linux 中模拟网络延迟和丢包

0
分享至

关注留言点赞,带你了解最流行的软件开发知识与最新科技行业趋势。" Type="normal"SectionTitle="在本文中,我们将了解如何使用 Linux 中的 tc 命令来模拟网络缓慢以及我们如何模拟数据包损坏。" Type="normal"@@

可能会有这样的场景,当你想在网络很慢的时候测试一个应用程序(我们也称之为高网络延迟)。或者您正在重现观察到某些异常行为的客户场景(具有高网络延迟)。在 Chrome 浏览器中,我们可以轻松模拟较慢的网络连接。当我们使用 Web 应用程序时,这非常有用。但我们也可以拥有非网络应用程序,如网络服务应用程序、消息传递代理等。此外,使用 Chrome 开发工具模拟的缓慢更多来自客户端。

在本文中,我们将了解如何使用Linux 中的 tc命令来模拟网络缓慢以及我们如何模拟数据包损坏。我在网上关注了几篇文章,在测试了文章中提到的命令后,我分享了我的经验。

1.使用python 实用程序运行基本的 HTTP 应用程序。然后我们可以使用 curl 或ab实用程序检查响应时间。

$ python3 -m http.server

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

# we can use curl with following syntax to get statistics for total response time.

$ curl -o /dev/null -s -w 'Establish Connection: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n' http://localhost:8000/

Establish Connection: 0.000331s

TTFB: 0.002978s

Total: 0.003120s

# we can also use ab utility to understand statistics of a request. Here -n switch is used for number of request to be sent.

$ ab -n 1 http://localhost:8000/

This is ApacheBench, Version 2.3 <$Revision: 1879490 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient).....done

Server Software: SimpleHTTP/0.6

Server Hostname: localhost

Server Port: 8000

Document Path: /

Document Length: 2571 bytes

Concurrency Level: 1

Time taken for tests: 0.003 seconds

Complete requests: 1

Failed requests: 0

Total transferred: 2727 bytes

HTML transferred: 2571 bytes

Requests per second: 374.11 [#/sec] (mean)

Time per request: 2.673 [ms] (mean)

Time per request: 2.673 [ms] (mean, across all concurrent requests)

Transfer rate: 996.29 [Kbytes/sec] received

Connection Times (ms) min mean[+/-sd] median max

Connect: 0 0 0.0 0 0 Processing: 3 3 0.0 3 3 Waiting: 3 3 0.0 3 3 Total: 3 3 0.0 3 3

2. 现在设置两秒的延迟,然后再次检查响应时间。此外,我们会看到由于我们设置的延迟,总响应时间增加了。

#set a delay of 2 second for loopback interface.

$ sudo tc qdisc replace dev lo root netem delay 2000ms

# show the rule set

$ tc qdisc show dev lo

qdisc netem 8001: root refcnt 2 limit 1000 delay 2s

# we can use curl(or ab) with following syntax to get statistics for total response time.

$ curl -o /dev/null -s -w 'Establish Connection: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n' http://localhost:8000/

Establish Connection: 4.000354s

TTFB: 8.002722s

Total: 8.002833s

cpandey@cpandey:~$ ab -n 1 http://localhost:8000/

This is ApacheBench, Version 2.3 <$Revision: 1879490 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient).....done

Server Software: SimpleHTTP/0.6

Server Hostname: localhost

Server Port: 8000

Document Path: /

Document Length: 2571 bytes

Concurrency Level: 1 Time taken for tests: 8.003 seconds

Complete requests: 1 Failed requests: 0

Total transferred: 2727 bytes

HTML transferred: 2571 bytes

Requests per second: 0.12 [#/sec] (mean)

Time per request: 8002.822 [ms] (mean)

Time per request: 8002.822 [ms] (mean, across all concurrent requests)

Transfer rate: 0.33 [Kbytes/sec] received

Connection Times

(ms) min mean[+/-sd] median max

Connect: 4000 4000 0.0 4000 4000 P

rocessing: 4003 4003 0.0 4003 4003

Waiting: 4002 4002 0.0 4002 4002

Total: 8003 8003 0.0 8003 8003

3、最后,删除我们之前设置的规则;这很重要,因为我们正在模拟一个慢速网络。这会减慢整个接口和关联的网络流量。因此,一旦我们完成测试,重要的是删除我们设置的规则。

$ sudo tc qdisc delete dev lo root

4. 我们还可以按照设置的百分比模拟数据包的损坏。根据我的测试,我发现这也有助于模拟网络延迟。我观察到数据包被重新传输,因为TCP 协议确保数据被正确接收,没有数据丢失,并且是有序的。

$ sudo tc qdisc replace dev lo root netem corrupt 50%

就是这样; 我希望您会发现这篇文章有趣且有帮助。谢谢你。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
普京、泽连斯基、拜登、北约都毫无退让,政治赌徒已走到红眼了…

普京、泽连斯基、拜登、北约都毫无退让,政治赌徒已走到红眼了…

侦姐有料
2024-06-15 17:54:45
奔驰车主肇事逃逸后持棍击打女骑手,并对其死亡威胁,身份被扒

奔驰车主肇事逃逸后持棍击打女骑手,并对其死亡威胁,身份被扒

花小萌和你聊情感
2024-06-16 00:44:30
电动车被查后,8090年代黄包车、28大杠重现江湖,网友:被迫无奈

电动车被查后,8090年代黄包车、28大杠重现江湖,网友:被迫无奈

三月柳
2024-06-13 11:45:57
全额奖学金邀请姜萍?香港中文大学回应:消息不实

全额奖学金邀请姜萍?香港中文大学回应:消息不实

封面新闻
2024-06-15 13:19:10
买房人开始崩溃了!

买房人开始崩溃了!

山丘楼评
2024-06-13 23:05:40
实在想不明白!一个球队替补,拿着300万底薪,为什么都叫他巨头

实在想不明白!一个球队替补,拿着300万底薪,为什么都叫他巨头

球毛鬼胎
2024-06-15 15:10:53
3-1逆转!中超季军拒绝爆冷,2分钟2球手刃旧主 亚泰旧将鞠躬致歉

3-1逆转!中超季军拒绝爆冷,2分钟2球手刃旧主 亚泰旧将鞠躬致歉

环太平洋老正太
2024-06-15 21:36:05
“他下周将赴中国,预计会激烈磋商”

“他下周将赴中国,预计会激烈磋商”

观察者网
2024-06-16 10:46:18
G7炒作涉华议题“温差明显”

G7炒作涉华议题“温差明显”

环球时报国际
2024-06-15 07:16:28
安徽将迎大雨、暴雨!

安徽将迎大雨、暴雨!

中安在线
2024-06-16 07:53:07
上海消费者傻眼!“我服了,一夜之间竟然跑路了?!”有人刚花了6000多元...警方介入→

上海消费者傻眼!“我服了,一夜之间竟然跑路了?!”有人刚花了6000多元...警方介入→

上观新闻
2024-06-15 11:18:18
养老金上调基本正式确定,1950和1960出生的人,上调会有差异吗?

养老金上调基本正式确定,1950和1960出生的人,上调会有差异吗?

奇名呀
2024-06-11 09:02:33
唱不过周杰伦,演不过谢霆锋,史上巅峰期最短最无奈的小天王

唱不过周杰伦,演不过谢霆锋,史上巅峰期最短最无奈的小天王

综艺拼盘汇
2024-06-15 07:25:08
阿里竞赛天才不止姜萍,第26名是初中生,还有一个散修外卖员

阿里竞赛天才不止姜萍,第26名是初中生,还有一个散修外卖员

校长侃财
2024-06-15 17:23:13
倒查30年税务?有企业被要求补齐消费税3亿,网友热议不断!

倒查30年税务?有企业被要求补齐消费税3亿,网友热议不断!

眼光很亮
2024-06-16 08:01:14
同房后,精子进入女人体内没“受精”,女人身体会有什么感觉?

同房后,精子进入女人体内没“受精”,女人身体会有什么感觉?

荷兰豆爱健康
2024-06-16 07:45:07
4年2.21亿,再见快船!荣誉不要了,只要钱,哈登成了最大输家

4年2.21亿,再见快船!荣誉不要了,只要钱,哈登成了最大输家

祝晓塬
2024-06-16 03:56:47
国民党内对“土房哥”于北辰仇恨值很高,叶元之爆他被罢免的机会高

国民党内对“土房哥”于北辰仇恨值很高,叶元之爆他被罢免的机会高

海峡导报社
2024-06-15 10:30:10
普京的停火条件及各方评论:沙皇的仁慈还是绝望的呐喊?

普京的停火条件及各方评论:沙皇的仁慈还是绝望的呐喊?

鹰眼Defence
2024-06-15 17:38:23
唯一在世的一代领导人,曾任政治局常委,如今107岁

唯一在世的一代领导人,曾任政治局常委,如今107岁

深度知局
2024-06-13 17:41:13
2024-06-16 11:36:49
墨谈科技
墨谈科技
业务数码玩家.无聊的博主
2990文章数 567关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

40余套房屋涉嫌"一房多卖" 有购房者内心积郁因病去世

头条要闻

40余套房屋涉嫌"一房多卖" 有购房者内心积郁因病去世

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

江宏杰秀儿女刺青,不怕刺激福原爱?

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

东风奕派eπ008售21.66万元 冰箱彩电都配齐

态度原创

艺术
教育
家居
公开课
军事航空

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

教育要闻

计算机专业,会是下一个土木吗?

家居要闻

空谷来音 朴素留白的侘寂之美

公开课

近视只是视力差?小心并发症

军事要闻

普京提停火和谈条件 美防长迅速回应

无障碍浏览 进入关怀版