私はclusterとsocket.ioと戦ってきました。クラスター機能を使用するたびに(ただし、組み込みのNodejsクラスターを使用します)、socket.ioで多くのパフォーマンスの問題や問題が発生します。
これを調査しようとしている間、私はsocket.io gitのバグレポートなどを調べてきました。サーバーにクラスターまたは外部ロードバランサーを使用している人は、socket.ioに問題があるようです。
「ハンドシェイクされたクライアントではなくクライアントが再接続する必要がある」という問題が発生するようです。これは、詳細なログを増やすと表示されます。これは、socket.ioがクラスターで実行されるたびに多く表示されるため、これに戻ると思います。つまり、クライアントは、新しい接続を行うたびに、socket.ioクラスター内のランダム化されたインスタンスに接続されます(承認時に複数のhttp / socket / flash接続を実行し、後で新しいデータをポーリングするときにさらに接続します)。
今のところ、一度に1つのsocket.ioプロセスのみを使用するように戻しました。これはバグである可能性がありますが、socket.ioの構築方法の欠点でもある可能性があります。
追加:将来これを解決する私の方法は、クラスター内の各socket.ioインスタンスに一意のポートを割り当ててから、クライアント側でポートの選択をキャッシュすることです。