Socket.io: シャットダウン時にSocket.iopm2がソケットを閉じない

作成日 2016年11月11日  ·  4コメント  ·  ソース: socketio/socket.io

この問題はhttps://github.com/Unitech/pm2/issues/2508に続き
問題は、pm2を介してsocket.ioサーバーを再起動またはリロードした場合、(私が理解している限り)まだ多くのソケットがオンラインのままであるため、CPUのロードとメモリのスパイクが発生することです。

また、この問題の前兆として、サーバーが実行されているモード(フォークまたはクラスター)に関係なく、アクティブなソケットの数が増えています(たとえば、4000、3995、4010、4005、4020など、急激なジャンプはありませんが、常に)時間とともに、何がますます多くのメモリを必要とし、その結果、メモリリークが発生しますか?

最も参考になるコメント

私は昼も夜も素晴らしい美しい人です

全てのコメント4件

絶えず上昇している接続数について-pm2の問題ではありません。nginx、pm2、clusterを拒否し、パラメーターなしで「nodeserver.js」コマンドを使用して純粋なnode.jsで実行するインスタンスを1つだけ残しました。 したがって、将来これを読む人は、私の接続数の問題はPM2が原因ではありません。

問題はモバイルクライアントです。socket.io接続/再接続設定を無視し、サーバーが3日間オフラインであったにもかかわらず、サーバーを固定してからサーバーがオンラインになり、再接続します。 したがって、ポートが一度パブリックであり、このポートで開いているクライアントがまだある場合は、私の状況になります。

私は昼も夜も素晴らしい美しい人です

@Nerfairモバイルクライアントはどのsocket.ioクライアントを使用しますか? socket.io-client ? またはネイティブのもの(Android / iOS)?

@darrachequesne正しく理解できたかどうかはわかりませんが、標準です

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

サーバー側では

sio = require('socket.io')
このページは役に立ちましたか?
0 / 5 - 0 評価