节点服务器的高内存和CPU使用率

时间:2018-09-25 12:31:19

标签: mysql node.js node-modules

我在digitalocean Droplet中安装了一个nodejs应用程序。我正在使用mysql作为数据库,并通过使用池连接。

pool = mysql.createPool({
connectionLimit: 10,
host: "localhost",
user: "root",
password: "password",
database: "mydb",
supportBigNumbers: true, 
bigNumberStrings: true,
charset : 'utf8mb4',
connectTimeout:500,
});

并按照以下方式使用连接。

socket.on('login', function (msg) {
    pool.getConnection(function (err, con) {
        if (err) {
            throw err;
        } else {
            login(socket, con, io, msg);
        }
    });
});

是因为池连接还是我做错了吗?我已经在服务器启动时需要了所有必需的模块,但是在必要时将require放在了模块内部。

我的一个模块代码就是这样。

 const checkSession = require('./checkSession').checkSession;
 const checkCookie = require('./checkCookie').checkCookie;

module.exports = function (socket, con, io, msg) {
var obj = JSON.parse(JSON.stringify(msg));
var username = obj.loggedusername;
checkSession(socket, con, io, msg, function (returnValue) {
if (returnValue == "sessionOK") {
con.query("SELECT fullname FROM users WHERE username=?",[username], function(err, data){
if (err) throw err;
io.to(socket.id).emit("getdetailsresponse", {
fullname: data[0].fullname,
});
});
}
});
con.release();
}

还是因为我不应该在模块内部要求东西?

起初,服务器运行良好,CPU使用率约为2-3%,但是当我看到一两个小时后,我从mysql和node上获得了很高的cpu使用率,最后节点停止响应。

0 个答案:

没有答案