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进程内存一直在增加。
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 多谢提醒,马上试试,测试完后反馈结果。
你代码里面的函数调用有问题吧?看起来像是同步的写法
@alsotang 大神,那一段?
@Lishaojun client 的那一系列调用
@alsotang client.getConnection()我测试过了,是异步的,不过到了从进程,同步异步无所谓了,只要不影响主进程执行时间。 另外我准备多模拟一些设备压力测试下,内存回收速度。