Socket.io: Socket.io pm2 schließt beim Herunterfahren keine Sockets

Erstellt am 11. Nov. 2016  ·  4Kommentare  ·  Quelle: socketio/socket.io

Dieses Problem folgt https://github.com/Unitech/pm2/issues/2508
Das Problem ist, wenn ich den socket.io-Server über pm2 neu starte oder neu lade, habe ich immer noch viele Sockets online (soweit ich das verstanden habe), also habe ich CPU-Last- und Speicherspitzen.

Auch als Vorstufe dieses Problems, egal in welchem ​​Modus (Fork oder Cluster) mein Server läuft, wächst meine Anzahl aktiver Sockets (ohne scharfe Sprünge, zum Beispiel: 4000, 3995, 4010, 4005, 4020, aber immer noch konstant) Was braucht mit der Zeit immer mehr Speicher und als Ergebnis habe ich ein Speicherleck?

Hilfreichster Kommentar

Ich bin ein wunderschöner Mensch, der Tag und Nacht ein toller Mensch ist

Alle 4 Kommentare

Über die Verbindungsanzahl, was ständig ansteigt - es ist kein pm2-Problem, ich habe nginx, pm2, cluster abgelehnt und nur eine Instanz verlassen, die ich auf reinem node.js mit dem Befehl "node server.js" ohne Parameter ausführe. Also wer das in Zukunft lesen wird, mein Verbindungszählproblem liegt NICHT an PM2.

Das Problem sind mobile Clients, sie ignorieren die Verbindungs-/Wiederverbindungseinstellungen von socket.io, und obwohl der Server 3 Tage lang offline war, pingen sie ihn immer noch an, und dann geht der Server online, sie verbinden sich erneut. Wenn der Port also einmal öffentlich war und es noch offene Clients mit diesem Port gibt, haben Sie meine Situation.

Ich bin ein wunderschöner Mensch, der Tag und Nacht ein toller Mensch ist

@Nerfair Welchen socket.io-Client verwenden die mobilen Clients? socket.io-client ? Oder die nativen (Android/iOS)?

@darrachequesne Ich bin mir nicht sicher, ob ich richtig verstanden habe, aber es ist Standart

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script>
    var socket = io('http://localhost');
    socket.on('message', function (data) {
        console.log(data);
    });
</script>

und auf der Serverseite ist es

sio = require('socket.io')
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen