socket.io REDIS et fuite de mémoire
Question
La version de My est socket.io@0.8.7 et redis@0.7.1. Je suis sous Windows.
Dans certains endroits, je l'ai vu que le problème est résolu. Je suppose que je suis en utilisant la dernière version socket.io. ce qui est emitter.setMaxListeners () et où puis-je le mettre?
(node) warning: possible EventEmitter memory leak detected. 11 listeners added.
Use emitter.setMaxListeners() to increase limit.
Trace:
at RedisClient.<anonymous> (events.js:133:17)
at Socket.<anonymous> (c:\HTML5\LIKEPREF\test\server\server.js:576:18)
at Socket.$emit (events.js:67:17)
at SocketNamespace.handlePacket (C:\Personal\software\nodejs\NODE\node_modul
es\socket.io\lib\namespace.js:335:22)
at Manager.onClientMessage (C:\Personal\software\nodejs\NODE\node_modules\so
cket.io\lib\manager.js:459:38)
at WebSocket.onMessage (C:\Personal\software\nodejs\NODE\node_modules\socket
.io\lib\transport.js:387:20)
at Parser.<anonymous> (C:\Personal\software\nodejs\NODE\node_modules\socket.
io\lib\transports\websocket\hybi-16.js:40:10)
at Parser.emit (events.js:67:17)
at C:\Personal\software\nodejs\NODE\node_modules\socket.io\lib\transports\we
bsocket\hybi-16.js:286:16
at Parser.expectHandler (C:\Personal\software\nodejs\NODE\node_modules\socke
t.io\lib\transports\websocket\hybi-16.js:297:15)
J'utilise Redis PubSub et quand je suis abonne à Redis, à ce moment-là, il vomit cet avertissement.
La solution
Il y a un problème connu associé à cela. On dirait il a été patchés il y a plusieurs mois. Le correctif est plus facile de définir les auditeurs maximum à 0 qui supprimera la limite réelle. Donc, il ressemblerait à quelque chose comme ceci:
this.sub = redis.createClient(opts.redisSub.port, opts.redisSub.host, opts.redisSub);
this.sub.setMaxListeners(0);
Vous pouvez trouver la pleine discussion ici: https://github.com/LearnBoost/socket.io/issues / 520