使用了 setInterval 定时推送一些消息。连接数在1000左右。
原来 15 秒左右推送一次,经常出现自动断开连接的情况。
改成了20秒以后还是会有问题,而且有时有延迟。
现在CPU一直在100%
现在流程如下:
启动定时(20秒每次) - > 从 Couchbase 读取数据 -> 遍历当前登录人数 -> 针对不同人推送不同消息
情况具体些,比如服务器什么配置,nodejs是默认配置么, socket >1000后报什么错,你的case预计要处理多少个链接
你把各种log打出来看 我猜socket有很多ECONNRESET或者TIMEOUT
这是个比较复杂的SOCKET优化问题
已经解决了
原来是用IO对象直接 emit var io = require(“socket.io”)(http); io.emit(“cmd”+userid , _Str);
现在把每个连接的socket保存下来 onlineUsers[obj.userid] = {‘c_id’:obj.userid,‘socket’:socket}; 推送时 onlineUsers[userid].socket.emit(“cmd” +user id, _Str);
setInterval(function(){ bucket.getMulti([ “Document1” , “Document2” ], function(err, result) { if(err){ console.log(new Date() + " : ERROR : " + err); } else { Emit(result); } }); } , 10 * 1000);
有个这个 。。。。
多次测试,就是 io.emit(“cmd”+userid , _Str); 这个的问题,这里注释掉以后就没啥问题。
完整的代码在这里:http://www.cnblogs.com/chenliang-zibo/p/5389939.html
其实东西并不多。