我对node.js相当新,并使用node_postgres libray。我一直在使用sockjs和Primus 作为我的Web服务器原型的传输。我在我的服务器上使用PM2作为我的监控工具,并注意到ram的使用情况随着我查询postgres而上升。我使用内置连接池的node_postgres作为数据库。断开客户端与服务器的连接不会清除内存,这只会使我连接的客户端越多,我所做的查询就越多。当客户端与我的服务器断开连接时,如何刷新此内存? 我很感激你们的任何意见! 这是我的代码:
var Static = require('node-static');
var http = require('http');
var file = new Static.Server('./public');
var PORT = 8083;
var pg = require('pg');
var conString = "postgres://username:password@localhost/database";
/*********** Primus Plugins ***************/
var Primus = require('primus');
var Emitter = require('primus-emitter');
var server = http.createServer(function (request, response) {
request.addListener('end', function () {
file.serve(request, response);
}).resume();
}).listen(PORT);
// primus instance
var primus = new Primus(server, { transformer: 'sockjs', parser: 'JSON' });
// add emitter to Primus
primus.use('emitter', Emitter);
primus.on('connection', function (spark) {
console.log("User: " + spark.id + " connected");
spark.on('test', function (data){
pg.connect(conString, function(err, client, done) {
if(err) {
return console.error('error fetching client from pool', err);
}
client.query('SELECT * from tbldata where dev_id = ' + data, function(err, result) {
if(err) {
return console.error('error running query', err);
}
console.log(result);
spark.send('done_query', result);
//call `done()` to release the client back to the pool
done();
});
});
});
});
primus.save(__dirname +'/primus.js');