Javascript 插座io和x2B;节点+;json实例崩溃
我的socket.io实例使用长轮询传输。当有超过400个并发连接时,为什么我的服务器会崩溃 该服务器有32GB的RAM和一个Xeon处理器 我已将用户列表存储在JSON文件中,并在将数据广播到客户端之前读取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(
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