论UDX并发,单台服务器1.5w联接,每条联接发送1KB数据,10秒内没处理,断开联接--之改进过程

探讨了UDP协议在高并发传输场景下的优化策略及应用前景,特别关注于并发处理、定时器、跨平台特性和多线程技术,强调了在视频监控、流媒体等领域的高效应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      对于并发这个话题已经讨论很多,特别是在TCP大量联接的成功案例很多。这里不例举,少说几W多则上10W都有。

 

     但是作为UDP可靠传输协议来说,每个事务处理都需要我们的CPU完成,而且我们要维护心跳,保证条条连接能正常收发,不让洞给关掉了,使联接断开。所以UDP的多条连接并发显得格外的重要了。因为要利用UDX的实时性,高吞吐量,必须达到可用的目的。否则传输性能再高,也没有什么太大的应用空间。比如在视频监控的流媒体服务器处理上,这种高并发显得就非常重要。而如果没有并发,则只能用在点对点之间传输音视频或文件,不能大规模的替换TCP的一般场景。

    

      UDX的传输的优势,包括实时性,吞吐量,跨平台,这些是牺牲了大量的CPU处理时间换来的,为了能快速的回发ACK及OnTimer回调,所以必须需要精确定时器。

 

为此UDX目前采用了多媒体定时器,及多线程,并没有使用IOCP,EPOLL,主要是考虑跨平台的简单特性,使用上轻量级。可以定制,内部工作线程数量。

 

但是精确定时器的存在,比如,50MS我们需要轮询一下,一条连接的消息通道和数据通道。1秒的时候,一条连接要处理 20 * 2 = 40次。而发送模块是精确到1MS级别的,那么,一条连接就是要处理接近 40*1000 = 4w次。

 

最近有个客户要求3W联接在线,并收发数据要求,为了争取一个客户我开始了优化过程,其实我心里明白的很,这是不可完成的任务,因为

以前面计算来看,如果,我们现在有1.5w条连接,就是1.5w*4w次处理。这对并发处理提出了很高的要求,但是这么大并发测试,根本没有过,我最多测试过2000.

 

我开始写测试用例,用例代码可以在我的网站www.goodudx.com上下载到.用这个测试用例可以在我的机器上跑4000联接。

本以为4000联接已经非常好了。但是现在不得不重新查找,每一个可能柱塞并发的地方。

客户找来一台AMD的服务器,2.4G主频,24核CPU,我开始了测试,8000并发,各个CPU,占用都很平均,就是连接量上不去。

在1.98版本之前,我测式发,较差的机器,可以并发在2000条连接,实时性不受影响,这里还只是一条连接只发送1KB/S.

在较好的机器上可以跑到4000条,比如我的现在I7 CPU 16G内存的机器中,不过主要是受CPU影响,理论上还要多一点点。

在客户LINUX64位服务器上测试,4000能稳定收发,8000时,有部分联接会因为得不到处理,联接超时断开。

 

回家思考,对联接管理,论轮采用分片式锁定,定时器采用属性计数方式。在处理数据时采用引用计数方式,防止锁的范围过大。尽量并发使用各个CPU,测试一举通过。

 

支持这么多联接以后,结合UDX的可定制,跨平台的特性,就完全可以在移动互联网领域,流媒体方案中及大型即时通讯产品,云存储,云计算中充份利用,前景一片光明。

 

希望更多的人来观注UDX,支持国产软件。

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值