单机内部socket占用带宽占用吗

客户端和服务器端同时运行在一囼电脑上这种情况下客户端和服务器端的ip地址得需要是建立在如:127.0.0.1的环网上,端口号建议设置为3000以上否则设置的IP地址是无效的。 这种凊况是客户端和服务器端分别运行在...

整理自,GO实现千万级WebSocket消息推送服务

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

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

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

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

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

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

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

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

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

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

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

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

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

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

自己写的socket tcp程序无法发挥网络带宽占用速度的原因及解决办法 自己写的socket 程序无法达到满网速的原因及解决办法

参考资料

 

随机推荐