0

チャット アプリケーションに socket io と node を使用しています。2つの問題があります

  • 1) ソケットごとの RAM 使用量の継続的な増加
  • 2) ソケットを監視するために pm2 を使用しました。起動して完全に動作し、RAM 使用量が増加して 100MB を超え、その後ソケットが停止し、pm2 がソケットを自動的に再起動すると、RAM 使用量が 50MB 近くになり、ユーザーはメッセージを送信できません。

socket.on('iAmOnline', 関数(データ){

    if(typeof usernames[data.id] != 'undefined'){
      delete usernames[data.id];
      delete onlineClients[data.id];
      if(typeof isChatScreen[data.id] != 'undefined'){
        delete isChatScreen[data.id];
      }
    }
    socket.username = data.id;
    usernames[data.id] = data.id
    onlineClients[data.id] = socket.id;
    if(typeof data.isChatScreen != 'undefined'){
      isChatScreen[data.id] = data.isChatScreen;
    }else{
      isChatScreen[data.id] = 1;
    }
    if(typeof usernames[data.id] != 'undefined'){
      var allChats = getChats(data.id, function(chats) {

            var a = chats.pendingMessage;
            var b = chats.deliveredMessage;
            var c = chats.readMessage;
            for(var i=0;i<a.length;i++){
              socket.emit("message", {'from':a[i]['userAId'],'to':a[i]['userBId'], 'msg':a[i]['message'],'key':a[i]['uniqueKey']});
            }
            for(var i=0;i<b.length;i++){
              socket.emit("delivered", {'from':b[i]['userBId'],'to':b[i]['userAId'], 'localId':0,'key':b[i]['uniqueKey']});
            }
            for(var i=0;i<c.length;i++){
              socket.emit("read", {'from':c[i]['userBId'],'to':c[i]['userAId'], 'localId':0,'key':c[i]['uniqueKey']});
            }
      });
      allChats = null;

    }

});

function getChats(userId, callback){
  return request({
  uri: "http://twango.me/api/v1/chats?userId="+userId,
  method: "GET",
  timeout: 10000,
  followRedirect: true,
  maxRedirects: 10
}, function(error, response, body) {
  callback(JSON.parse(body).response);
});

}

PM2 ログが添付されています。 ここに画像の説明を入力

4

0 に答える 0