deadkrolik
@deadkrolik

Варнинг на возможную утечку памяти при запуске forever-monitor

Есть такая штука как forever-monitor — приложение для Node.JS, следящее за тем что процесс живет, и при необходимости перезапуская его. Работает как для nodejs проектов, так и для сторонних программ. Следующий код (нужно, чтобы постоянно работало N воркеров):

var forever = require('forever-monitor');
for (var i=1;i<=11;i++) {
	forever.start([ '/usr/bin/php', 'worker.php', i ], {
		max : Math.Infinity,
		silent : false
	});
}


Выдает вот такой варнинг:

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. 
           Use emitter.setMaxListeners() to increase limit.
Trace
    at WriteStream.EventEmitter.addListener (events.js:175:15)
    at Socket.Stream.pipe (stream.js:52:8)
    at startLogs (.../forever-monitor/lib/forever-monitor/plugins/logger.js:65:30)
    at EventEmitter.emit (.../forever-monitor/node_modules/broadway/node_modules/eventemitter2/lib/eventemitter2.js:332:22)
    at Monitor.start.child.on.spinning (.../forever-monitor/lib/forever-monitor/monitor.js:153:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)


Хотелось бы узнать насколько это критично и как можно этого избежать.
  • Вопрос задан
  • 4385 просмотров
Решения вопроса 1
@kxyu
собственно, ничего страшного — в EventEmmiter по умолчанию стоит ограничение на 10 listener ов, на случай если объекты в процессе подписываются и не отписываются (т. е. при некоторых условиях это может свидетельствовать об утечке). Вот такой вот код. То есть, просто выводится сообщение, больше ничего.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dizballanze
@dizballanze
Software developer at Yandex
Это есть в официальной документации.
Если коротко, то такое сообщение выдается когда у вас больше 10 слушателей события.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы