socket.io性能问题
发布于 11 年前 作者 wswsws1200 15743 次浏览 最后一次编辑是 8 年前

有人用loadrunner测过响应时间吗?还有就是利用server to server的socket.io实现nodejs集群中。保持少量的长连接,但信息量巨大。这样服务器负荷会高吗?求高人指教

6 回复

自己顶一下~~

我最近正在写一个响应,服务端运行数据发送给客户端: socket.on(‘begin’, function(data){ var hc = holdplayer(player1,ball); var bp = ballnearplayer(player1,ball);

        setTimeout(function(){
            var ss = setInterval(function(){
                ballmove(ball,hc,bp,20,space,function(player){
                    
                    player.randomJF(ball,player1,player2,space,socket);
                    clearInterval(ss);
                    console.log('中文clear');
                });
                
                socket.emit('rebegin',{ball:ball,pointl:player1,pointr:player2});
            },20);
            var dd = setInterval(function(){
                
            },2000);
            
        },1000);
    });

20毫秒发送一次,结果是很稳定!

看来socket.io一旦建立稳定长连接后数据传输就很稳定。旦并发过多后,有很多长连接会中断,主要不清楚socket.io底层怎么写的。这方面参数不知道有没有人专门测试过。用一般的测试工具也不爱好测试这个吧,

在任何时候,“长连接会中断”,都是一个必要的假定。客户端应该自己处理好自动重连后的操作,这个并不难。连接会中断并不是问题,而是一个常识。就算是写TCP程序,也不能假定TCP连接永远不需要重连。只要你的应用可以无缝的持续工作,这就够了。

这个重连我写了,客户端不是有reconnect。只是我是不清楚socket.io性能到底怎么样。少数长连接消息量大,多数长连接消息量相对少这两个场景哪个更适合socket.io

信息量大小得有个定义吧,我个人认为socket.io更适合频繁简短通讯的场合,比如一次只传几KB数据的情况。如果信息量很大,网络传输的延迟就会比较明显,很容易造成socket.io协议超时。这是考验硬件设施,而不是考验socket.io。这种情况下,不论用什么模块,node.js本身压力就大。如果需要保持实时通讯的会话,又需要传输大批量的数据,最好的做法是把数据拆分了,分成一个个小块慢慢发,避免一次一大块的数据洪峰。

回到顶部