2012-02-16 5 views
4

내 socket.io 버전은 [email protected][email protected]입니다. Windows를 사용 중입니다.socket.io redis and memory leak

일부 지역에서는 문제가 해결 된 것으로 나타났습니다. 나는 최신 socket.io 버전을 사용하고 있다고 가정한다. emitter.setMaxListeners() 란 무엇이며 어디에 설정할 수 있습니까? 내가 그 시점에서, 레디 스에 가입하고 때

(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) 

나는이 경고를 던졌습니다 레디 스의 pubsub를 사용하고 있습니다.

답변

8

알려진 문제가 있습니다. 몇 달 전에 패치 된 것 같습니다. 가장 쉬운 방법은 최대 청취자를 0으로 설정하여 실제 한계를 제거하는 것입니다. https://github.com/LearnBoost/socket.io/issues/520

+0

마이크 감사 :

this.sub = redis.createClient(opts.redisSub.port, opts.redisSub.host, opts.redisSub); this.sub.setMaxListeners(0); 

당신은 여기에 전체 토론을 찾을 수 있습니다 그래서 다음과 같이 보일 것입니다. 토론에 따르면, this.subsetMaxListeners (0) 대신 this.maxListeners (0) 여야합니다. 어쨌든 내가 시도하고 당신을 업데이 트됩니다. – user644745

+0

마이크, 방금 테스트되었습니다. 그것은 maxListeners (0)가 아닌 setMaxListeners (0)이어야합니다. 잘 작동하는 것 같습니다. 감사. – user644745