• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] memory leak Warnung ??!!??

Paykoman

New member
Hallo,

nun ich sitze schon eine Weile daran mir meinen Node.js Server zu formen und leider treten immer wieder ein paar schwierige Hürden auf.
Heue habe ich einige Tests gemacht und Vorbereitungen für eine Umstrukturierung.
Mir viel dann auf das wenn ich mit meinem Client die Seite zu oft neulade (11 mal), folgender Fehler im Terminal erscheint:

(node) warning: possible EventEmitter memory leak detected. 11 connect listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at Namespace.addListener (events.js:179:15)
at Namespace.<anonymous> (/home/wposrv/socket/node_modules/socket.io/lib/appDev.js:258:12)
at Namespace.emit (events.js:107:17)
at Namespace.emit (/home/wposrv/socket/node_modules/socket.io/lib/namespace.js:205:10)
at /home/wposrv/socket/node_modules/socket.io/lib/namespace.js:172:14
at process._tickCallback (node.js:355:11)

Nun mein Server ist weder für Streams noch für einen reinen Chat gedacht. Hauptsächlich werden damit eben Feeds gehändelt und an user die online sind gesendet um Kontent direkt in die Seite einzuspielen.
Meine Seite habe ich schon entsprechend umgebaut so das man überwiegend nur eine "Haupt-Seite" hat auf der man sich aufhält und alle Unterseiten sich in Fenstern öffnet (ohne eine neue Socket-Verbindung aufzubauen). Soweit alles gut und schön doch die obige Fehlermeldung irritiert mich einwenig denn socket sollte die User doch bei disconnect automatisch entfernen, was er scheinbar auch tut, denn wenn ich mir die Verbundenen Clients anzeigen lasse sehe ich da nur 2 Stück (mich und ein Kumpel).

Und aus der Meldung selbst werde ich auch nicht so richtig schlau, geht es dem jetzt um 11 zu schnell Verbindungen oder um Clients weil den Variablen-Name "setMaxListeners" würde ich jetzt eher als eine Begrenzung für eine Maximal gleichzeitig verbundene Clients interpretieren.

Leider hätte ich atm nicht viel zu zeigen was den Code angeht, da ich nämlich gerade dabei bin den Server für multiple Tabs startklar zu machen und nun ja diese Meldung macht es da schon etwas schwer.

MFG; Paykoman
 
Mir viel dann auf das wenn ich mit meinem Client die Seite zu oft neulade (11 mal), folgender Fehler im Terminal erscheint:
hört sich so an, als würdest du irgendwas nicht aufräumen oder irgendwas zu oft eintragen

Und aus der Meldung selbst werde ich auch nicht so richtig schlau, geht es dem jetzt um 11 zu schnell Verbindungen oder um Clients weil den Variablen-Name "setMaxListeners" würde ich jetzt eher als eine Begrenzung für eine Maximal gleichzeitig verbundene Clients interpretieren.
das ist eine meldung aus dem events-modul
https://nodejs.org/api/events.html#events_emitter_setmaxlisteners_n
 
Nun zwecks der Umstrukturierung habe ich gestern natürlich fleißig geoogelt und bei Stackoverflow gesehen das da Jemand bei seinem Server nicht socket sondern client in die connection funktion übergeben hat.

SERVER:
Code:
socket.on('connection', function(socket) // alt
socket.on('connection', function(client) // neu - testweise

Ich hatte damit mal rumgespielt und es scheint aber nicht so sinnvoll zu sein bzw. kommt da wieder die Architektur ins Spiel.
Nun ist eher die Frage kann/sollte man das machen und wenn ja wie händelt man die disconnects weil dort scheint dann das Problem zu sein.
 
Zuletzt bearbeitet:
Nun zwecks der Umstrukturierung habe ich gestern natürlich fleißig geoogelt und bei Stackoverflow gesehen das da Jemand bei seinem Server nicht socket sondern client in die connection funktion übergeben hat.
oder xxx oder blablub oder ulf. wie du deinen parameter nennst ist egal.
EDIT: ähhhm... da wird nichts übergeben, jedenfalls nicht von dir. du registrierst hier nur ein callback (mit einem parameter) TIDE

Ich hatte damit mal rumgespielt und es scheint aber nicht so sinnvoll zu sein bzw. kommt da wieder die Architektur ins Spiel.
womit? mit dem parameternamen? den kann man sinnvoll oder auch nicht nennen, für die funktionalität spielt das keine rolle und hat nichts mit der architektur zu tun.

Nun ist eher die Frage kann/sollte man das machen
wieder die frage, es geht immer noch um den parameternamen?

wenn ja wie händelt man die disconnects weil dort scheint dann das Problem zu sein.
mit dem eventhandler on("disconnect", function(){}) wenn du wissen willst, was du dort machen musst, dass kann dir keiner sagen ohne deinen code zu kennen. außerdem solltest du das selbst wissen, sonst wirds schwer.
 
Zuletzt bearbeitet:
Zurück
Oben