千万级websocket技术瓶颈,及单机瓶颈

整理自https://www.imooc.com/learn/1025,GO实现千万级WebSocket消息推送服务

一:百万用户的websocket的技术瓶颈

主要有三个:内核瓶颈、cpu瓶颈和锁瓶颈

1内核瓶颈

在线用户达百万时,实时数据量非常之大,linux内核发送tcp的极限包频率是100万/秒,

优化:消息合并,减小网络小包推送,同一秒内的多条消息合并成1条推送,减小内核压力

2 cpu 瓶颈

1)浏览器与服务器通常采取json格式通讯

2)json编码特别消耗cpu资源

3)向100万在线推送资源,json需要100万次encode

优化:编码前置:1次编码+100万次推送

3.锁瓶颈

1)需要维护在线用户(100万在线),通常是个哈希字典结构

2)推送消息遍历整个集合,顺序发送消息,耗时极长

3)推送期间,客户端正常上下线,集合面临不停的修改,需要上锁,这期间客户端拿不到锁会无法正常上下线

解决方案:

a)大锁拆小,把长连接打散到多个集合,每个集合有自己的锁,每个集合独立,锁之间没竞争关系,

可多线程并发推送不同的集合

b)读写锁代替互斥锁

二 单机瓶颈

维护海量长连接会花费不少的内存

消息推送瞬时会消耗大量的cpu资源

消息推送瞬时带宽高达400-600MB(4-6Gbits)万兆网卡才能满足需求,是主要的技术瓶颈

因此需要分布式架构

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值