nodejs的fork进程执行mysql操作,内存不断增加
发布于 4个月前 作者 Lishaojun 607 次浏览 来自 问答

nodejs的fork进程mysql内存不断增加。

代码:

var mysql = require('mysql');
var sqlForks = require('fork-list');
var db_options = {
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: '123',
    database: '123'
};
var client = mysql.createConnection(db_options);
var moment = require('moment');
var date = new moment().format("YYYYMMDD");
var datetime = '';

sqlForks.proc(function(sqlString){
    client = mysql.createConnection(db_options);
    client.connect(function(err) {
            if(err)
            {
                debug_log('connect db error: ' + err);
            }
        });
    client.query(sqlString, function(err, results, fields) {  
        if(err)
        {
            datetime = new moment().format("YYYY-MM-DD HH:mm:ss");
            debug_log(datetime + " mysql error:" + err);
        }
    });
    client.end();
});

功能: 后台forks进程一直会收到sql的query语句,其实不断开mysql连接是最好的了。

现在问题: 每个forks进程内存一直在增加。

10 回复

mysql的client资源怎么释放

改成pool方式了,但是内存还是会慢慢上去,只有一个客户端在发数据测试。 代码: sqlForks.proc(function(sqlString){ client.getConnection(function(err, connection){ connection.query(sqlString, function(err, results, fields) {
if(err) { datetime = new moment().format(“YYYY-MM-DD HH:mm:ss”); debug_log(datetime + " mysql error:" + err); } }); connection.release(); }); });

fork-list这个模块 确认没有什么问题么 github上都没人关注过

@chemdemo 我不知怎么确认,我用了之后也没发现明显问题,也许刚发布没什么人关注吧。

感觉是fork-list的问题,换compute-cluster

@hades 多谢提醒,马上试试,测试完后反馈结果。

你代码里面的函数调用有问题吧?看起来像是同步的写法

@Lishaojun client 的那一系列调用

@alsotang client.getConnection()我测试过了,是异步的,不过到了从进程,同步异步无所谓了,只要不影响主进程执行时间。 另外我准备多模拟一些设备压力测试下,内存回收速度。

回到顶部