복붙노트

[REDIS] socket.io는 메모리 누수 레디 스

REDIS

socket.io는 메모리 누수 레디 스

내 socket.io 버전은 socket.io@0.8.7 및 redis@0.7.1입니다. 나는 Windows에서입니다.

어떤 장소에서, 나는이 문제가 해결되는 것을 보았다. 나는 최신 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을 사용하고 내가 레디 스에 가입하고 때, 그 시점에서이 경고를 던졌습니다.

해결법

  1. ==============================

    1.이과 관련된 알려진 문제가 있습니다. 그것처럼 보인다는 몇 달 전에 패치되었다. 가장 간단한 수정은 실제 한계를 제거 0 최대 수신기를 설정하는 것이다. 그래서 다음과 같이 보일 것입니다 :

    이과 관련된 알려진 문제가 있습니다. 그것처럼 보인다는 몇 달 전에 패치되었다. 가장 간단한 수정은 실제 한계를 제거 0 최대 수신기를 설정하는 것이다. 그래서 다음과 같이 보일 것입니다 :

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

    당신은 여기에 전체 토론을 찾을 수 있습니다 https://github.com/LearnBoost/socket.io/issues/520

  2. from https://stackoverflow.com/questions/9306191/socket-io-redis-and-memory-leak by cc-by-sa and MIT license