如何优化TCP长连接带宽?

发布于 2022-09-01 23:33:02 字数 837 浏览 19 评论 0

从无到有设计的IoT网站,基于Twisted+Cyclone+Tornado+Flask。彼此之间采用SQL,Redis,MongoDB和RESTful进行数据耦合。Twisted号称可以解决C10K问题,属于高并发型异步IP网络框架。所以得到了采用。

由于IoT基本上都是SocketServer,缺乏成熟的压测工具。考虑到GIL的问题,使用自己编写的简单Python多进程(Multi Process)客户端进行测试。

图片描述

设备采用长连接与IoT Socket Server保持连接,不断开。每隔0.5秒上传一次数据,报文长度<200B。压测使用50组长连接为基数,从50,100,150,200,250,300,每隔50基数做测试。此事发现:CPU占用率维持在25%左右,出网带宽维持在125kbps,但是入网带宽随着压测而上升到500kbps。由于IDC入网带宽统计严重滞后于出网带宽。出现非实时的出网带宽统计,甚至绘图不完整。只能够推测数值。

但是由于外网带宽总数在1Mbps,所以300台左右时,总带宽大约在600~700kbps左右,此时TeraTerm输入命令已经感觉到了延时。

结论
1Mbps带宽是系统瓶颈,即使采用高配服务器并不能够改善并实现高并发的IO连接数。

但实际上,每0.5秒发送200B,相当于400 B/s = 3.2kbps。而1Mbps支持300台设备,相当于每台占用带宽为3.5kbps。

不知道这样计算是否正确?是否必须从压缩应用数据入手优化带宽?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

枯叶蝶 2022-09-08 23:33:02

阿里云不限制也不对入网带宽进行计费。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文