使用节点postgres连接池的内存问题

时间:2014-07-05 16:35:02

标签: node.js out-of-memory connection-pooling sockjs node-postgres

我对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');

0 个答案:

没有答案