课上讲on going connection 是bottom neck, 并且estimate 的时候, ongoing connection 有500m, message delivery rate 只有1.2m, 并且提出维护ongoing connection 消耗很大的内存
问题: 如果这里是bottom neck ,那么解决方法是什么, 有哪几种好的解决方法, 并且相互间的优缺点是什么, 怎样做trade off, 感谢
课上讲on going connection 是bottom neck, 并且estimate 的时候, ongoing connection 有500m, message delivery rate 只有1.2m, 并且提出维护ongoing connection 消耗很大的内存
问题: 如果这里是bottom neck ,那么解决方法是什么, 有哪几种好的解决方法, 并且相互间的优缺点是什么, 怎样做trade off, 感谢
+1
补充问题:维护一个connection 内存代价具体是多少byte?还有其他代价吗(如CPU)?直觉上其他代价不成为问题
如果每个connection内存代价不大,我们可能都不需要对ongoing connection management 做sharding了。
=======
update:
每个connection 内存消耗似乎是至少KB 级别的
这样,做sharding是不能避免的了。
解决的方法主要是用更多的机器来维护数量庞大的connection。除此之外就是软件上提升单线程上的性能,让websocket server 处理尽量少的业务逻辑,硬件上用合适的机器(比如说内存大,线程数量多的机器)。
Connection是KB量级的,Whatsapp 2012年用35GB支撑了2M个connection。