2017-07-14 38 views
2

Inside /var/log/mongodb/mongod.log我有一个无限循环的打开和关闭连接。这使得mongod.log变得庞大,占用了磁盘空间。我也担心node.js应用程序中存在错误的代码。我在我的节点js应用程序中使用猫鼬和本地mongo驱动程序。我没有看到任何错误或例外。var/log/mongodb/mongod.log从node.js打开和关闭连接的无限循环

有没有人看过这个,以及可能的根本原因是什么?日志现在是11GB并且不断增长。

2017-07-14T17:51:59.562+0000 I -  [conn21293746] end connection 127.0.0.1:49373 (19 connections now open) 
2017-07-14T17:51:59.638+0000 I NETWORK [thread1] connection accepted from 127.0.0.1:49374 #21293747 (19 connections now open) 
2017-07-14T17:51:59.639+0000 I NETWORK [conn21293747] received client metadata from 127.0.0.1:49374 conn21293747: { driver: { name: "nodejs", version: "2.2.28" }, os: { type: "Linux", name: "linux", architecture: "x64", version: "3.13.0-117-generic" }, platform: "Node.js v6.10.2, LE, mongodb-core: 2.1.12" } 

2017-07-14T17:51:59.641+0000 I -  [conn21293747] end connection 127.0.0.1:49374 (19 connections now open) 
2017-07-14T17:52:00.008+0000 I NETWORK [thread1] connection accepted from 127.0.0.1:49375 #21293748 (19 connections now open) 
2017-07-14T17:52:00.008+0000 I NETWORK [conn21293748] received client metadata from 127.0.0.1:49375 conn21293748: { driver: { name: "nodejs", version: "2.2.28" }, os: { type: "Linux", name: "linux", architecture: "x64", version: "3.13.0-117-generic" }, platform: "Node.js v6.10.2, LE, mongodb-core: 2.1.12" } 
2017-07-14T17:52:00.013+0000 I -  [conn21293748] end connection 127.0.0.1:49375 (19 connections now open) 
2017-07-14T17:52:00.547+0000 I NETWORK [thread1] connection accepted from 127.0.0.1:49376 #21293749 (19 connections now open) 
2017-07-14T17:52:00.548+0000 I NETWORK [conn21293749] received client metadata from 127.0.0.1:49376 conn21293749: { driver: { name: "nodejs", version: "2.2.28" }, os: { type: "Linux", name: "linux", architecture: "x64", version: "3.13.0-117-generic" }, platform: "Node.js v6.10.2, LE, mongodb-core: 2.1.12" } 
2017-07-14T17:52:00.550+0000 I -  [conn21293749] end connection 127.0.0.1:49376 (19 connections now open) 

被调用一些特定的Node.js的代码经常

var MongoClient = require('mongodb').MongoClient; 
exports.logSession = function(payload) 
{ 
    MongoClient.connect(url, function (err, db) { 
     assert.equal(null, err); 
     insertSessionIntoTable(payload, db, function() { 
      db.close(); 
     }) 

    }) 

}; 

function insertSessionIntoTable(payload, db, callback) { 
db.collection(collectionName).insertOne(payload, function (err, result) { 
    assert.equal(err, null); 
    logger.verbose("Inserted a document into the collection."); 
    callback(); 
}); 
+0

将您的node.js应用程序代码添加到问题中。 –

+0

exports.logSession =函数(有效载荷) { MongoClient.connect(URL,函数(ERR,分贝){ assert.equal(NULL,ERR); insertSessionIntoTable(有效载荷,DB,功能(){ db.close (); }) }) }; –

+0

请添加完整的连接代码更新问题。 –

回答

0

您的代码将打开每个会话

exports.logSession = function(payload) 
{ 
    MongoClient.connect(url, function (err, db) { // for every session your code will open new connection 
     assert.equal(null, err); 
     insertSessionIntoTable(payload, db, function() { 
      db.close(); // here it will close it 
     }) 

    }) 
}; 

连接打开一次连接,并使用相同的连接做的所有操作。

var db; 
MongoClient.connect(url) 
    .then(function (dbInstance) { // <- db as first argument 
    db = dbInstance; 
    }) 
    .catch(function (err) {}) 

exports.logSession = function(payload) 
{ 
     insertSessionIntoTable(payload, db, function() { 
      // work done 
     }) 

    }) 
}; 
+1

谢谢,这对我很有用。我实现它只是一次性使连接。所以我不需要关闭数据库,对吗? –

+0

@ tritium_3绝对正确。 –