Javascript 插座io和x2B;节点+;json实例崩溃

Javascript 插座io和x2B;节点+;json实例崩溃,javascript,node.js,concurrency,socket.io,connection,Javascript,Node.js,Concurrency,Socket.io,Connection,我的socket.io实例使用长轮询传输。当有超过400个并发连接时,为什么我的服务器会崩溃 该服务器有32GB的RAM和一个Xeon处理器 我已将用户列表存储在JSON文件中,并在将数据广播到客户端之前读取JSON文件 var fs = require("fs"); const fse = require("fs-extra"); var cors = require("cors"); const winston = require(

我的socket.io实例使用长轮询传输。当有超过400个并发连接时,为什么我的服务器会崩溃

该服务器有32GB的RAM和一个Xeon处理器

我已将用户列表存储在JSON文件中,并在将数据广播到客户端之前读取JSON文件

var fs = require("fs");
const fse = require("fs-extra");
var cors = require("cors");
const winston = require("winston");


//SSL certificate files
var options = {
    key: fs.readFileSync("./xxx.key"),
    cert: fs.readFileSync("./xxx.crt"),
    ca: fs.readFileSync("./xxx.ca-bundle")
};

//express framework intialize and listening on port 443
var express = require("express"),
    app = express(),
    //
    server = require("https").createServer(options, app),

    iohttps = require("socket.io")(server, {
        pingInterval: 30000,
        pingTimeout: 10000
    }).listen(server),
    server.listen(3000, "0.0.0.0");

var report_nsp = iohttps.of("/report");
app.use(cors())

report_nsp.on("connection", function(socket) {
    socket.on("new userlive", function(data) 
        socket.join(data.eventId);
        socket.uid = data.uid;
        socket.random_id = data;
        socket.userType = data.userType;
        socket.addRoom = data.eventId;

        if (!fs.existsSync(data.eventId)) {
            fs.mkdirSync(data.eventId);
            var Obj = {};
            Obj[socket.uid] = socket.random_id;
            fse.writeJson("./" + socket.addRoom + "/listViewer.json", Obj, err => {
                if (err) console.error(err);
                var filePath = "./" + socket.addRoom + "/listViewer.json";

                fse.readJson(filePath, function(err, data) {
                    if (err) console.error(err);

                    data[socket.uid] = socket.random_id;
                    fse.writeJson(
                        "./" + socket.addRoom + "/listViewer.json",
                        data,
                        err => {}
                    );

                    report_nsp.emit("usernamesLive", {
                        users: data,
                        eventId: data.eventId,
                        userType: socket.userType
                    });
                });
            });
        } else {
            var filePath = "./" + socket.addRoom + "/listViewer.json";

            fse.readJson(filePath, function(err, data) {
                if (err) console.error(err);

                data[socket.uid] = socket.random_id;

                fse.writeJson("./" + socket.addRoom + "/listViewer.json", data, err => {
                    if (err) console.error(err);
                });

                report_nsp.emit("usernamesLive", {
                    users: data,
                    eventId: data.eventId,
                    userType: socket.userType
                });
            });
        }


    }); // new user ends


    socket.on("disconnect", function() {
        var filePath = `./${socket.addRoom}/listViewer.json`;
        fse.readJson(filePath, function(err, data) {
            if (err) console.error(err);
            if (data[socket.uid]) delete data[socket.uid];

            fse.writeJson("./" + socket.addRoom + "/listViewer.json", data, err => {
                if (err) console.log(err);
            });
            //Send the list of users connected live in the room.
            report_nsp.emit("usernamesLive", {
                users: data,
                eventId: socket.addRoom,
                userType: socket.userType
            });
        });

    }); // socket on disconnect ends
});

我的服务器如何处理至少1000个连接?

你能提供一些错误日志吗?尝试增加内存限制
节点--max old space size=8192 index.js#增加到8gb
@Andrew如果没有错误日志,我将尝试复制错误并存储它。我已经设置了--max old space size=8192