昨天晚上的压力测试,在300人以前是毫无压力的,后来为何就卡顿了呢?
主要是因为大家发送的内容太大了,有的竟然达到了近百K一条的信息。也就是说单条信息长度达到了十万字。
这并不是说不能发送超长文本,而是因为受带宽限制,我们的带宽只有3M,但本质上3M要除以8即400K左右。 你一条信息都100K,那么4个人同时在线就会容易卡住。注意::卡住是因为带宽问题,CPU还是毫无压力的。
一般来说,平时正常聊天也就几十个字节而已。甚至几个字节。所以面对正常聊天的话,几百人在线甚至上千人在线,仅仅3M带宽完全可以应付了。
当然,既然发现了问题,我们也做了解决方案,也就是说每达到一定人数的话,就会对内容长度做限制。如下图所示。为了避免大家能顺畅的聊天,内容太长的话,需要用户自己主动点击查看详情(像微信对于大图也是需要手工点击下载查看原图的原理是一样的)。这样就有效避免同时推送给所有用户而造成的带宽瓶问题。
为了避免用户恶意攻击,超过100K的内容,将只截取前500字当预览。不再推送,需要刷新界面,才能从WEB主服务器获取。
最后跟大家说明一下。WEB网站服务器与聊天服务器是分开的。 WEB进入慢也是因为WEB带宽不足,这跟聊天服务器扯不上关系。
所以聊天服务器也必须只能独立一台服务器的,如果混在一起的话,用户随便发一张图片都会把聊天卡住的。因为并发很占带宽