套接字Socket Select异步模型避坑指南

背景

最近跟一个公司,联调一个项目。现象:起初发现网络发数据,一会儿后内存就慢慢不停增长,通过屏蔽网路发送就貌似正常了。另外有一方公司,也用得相同数据接收方程序跑,一切都正常,而且都连续跑了个把月都正常。
就这样开启了一周的漫长填坑之旅,对自己代码各种怀疑:数据缓存组包,发送业务调度,数据源输出等排查,网络发送机制,套接字API使用细节。各种折腾后,都没发现什么异常,关键是数据量经确认根本不大,后来恍然醒悟,套接字阻塞发API也可能对方收不及时,也会导致发慢。
各种怀疑人生后,对方公司也忙填其他坑,就厚着脸皮问了句:能不能看下你们接收方源码。幸好对方哥们比较爽快,答应了,经过一遍全程浏览,终于发现了惊天动地的一幕!

天坑

对方采用Select异步模型,在一个线程中处理多个(此时对方代码写死32个)客户端连接,最关键的是,发现断开还要不断重连
因为业务差异,我们只有31个有输出,另外一个就没配置,所以就一直就在重联。导致了这次惨绝人寰的悲剧发生,阿门!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值