Walczyłem z klastrem i socket.io. Za każdym razem, gdy używam funkcji klastra (używam jednak wbudowanego klastra Nodejs), mam wiele problemów z wydajnością i problemów z socket.io.
Próbując to zbadać, grzebałem w raportach o błędach i tym podobnych w git socket.io i każdy, kto używa klastrów lub zewnętrznych systemów równoważenia obciążenia na swoich serwerach, wydaje się mieć problemy z socket.io.
Wydaje się, że powoduje to problem „klient nie uzgadniany, klient powinien ponownie się połączyć”, który zobaczysz, jeśli zwiększysz pełne rejestrowanie. Pojawia się to często, gdy socket.io działa w klastrze, więc myślę, że wraca do tego. Np. klient łączy się z losową instancją w klastrze socket.io za każdym razem, gdy wykonuje nowe połączenie (robi kilka połączeń http/socket/flash podczas autoryzacji, a później przez cały czas podczas odpytywania o nowe dane).
Na razie wróciłem do używania tylko jednego procesu socket.io na raz, może to być błąd, ale może to być również wada w sposobie budowania socket.io.
Dodano:Moim sposobem rozwiązania tego problemu w przyszłości będzie przypisanie unikalnego portu do każdej instancji socket.io wewnątrz klastra, a następnie wybór portu w pamięci podręcznej po stronie klienta.