2013-09-17 4 views
0

После многих трудных попыток и поиска в Google, я все еще не могу понять, как справиться с этим. Нужна помощь плз ...«Ошибка утечки EventEmitter», возникающая из-за использования последней версии nodejs

Выход:

(node) warning: possible EventEmitter memory leak detected. 51 listeners added. Use emitter.setMaxListeners() to increase limit. 
Trace 
    at EventEmitter.addListener (events.js:160:15) 
    at EventEmitter.once (events.js:179:8) 
    at SkinCollection.open (/home/nitin/node_modules/mongoskin/lib/mongoskin/collection.js:108:20) 
    at obj.(anonymous function) [as insert] (/home/nitin/node_modules/mongoskin/lib/mongoskin/utils.js:64:10) 
    at insertErrorLog (/home/nitin/dev/aayush/errorLog.js:37:18) 
    at Server.<anonymous> (/home/nitin/dev/aayush/errorLog.js:69:24) 
    at Server.EventEmitter.emit (events.js:98:17) 
    at HTTPParser.parser.onIncoming (http.js:2022:12) 
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:119:23) 
    at Socket.socket.ondata (http.js:1912:22) 

КОД LINK: link to code

Thnax заранее за помощь ...

ответ

0

Похоже db.collection создает EventEmitter всякий раз, когда вы называете Это. Может вы должны попытаться кэшировать коллекцию за пределами вашего обработчика запроса:

var logs = db.collection('logs'); 

var insertErrorLog = function (req, res) { 
    var pathname = url.parse(req.url).pathname; 
    var ua = req.headers['user-agent'];  // user-agent header from an HTTP request 
    var details = parser.setUA(ua).getResult(); 
    var params = url.parse(req.url,true).query; 

    logs.insert({…}); 

Быстрый взгляд на код показывает, что он всегда должен возвращать тот же экземпляр, но я не вижу какой-либо другой причины вашей проблемы:

https://github.com/kissjs/node-mongoskin/blob/master/lib/mongoskin/db.js#L148

+0

Thnx за быстрый ответ ... я пробую, как вы предложили ... –

Смежные вопросы