如何优化TCP长连接带宽?
从无到有设计的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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
阿里云不限制也不对入网带宽进行计费。