Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Otrzymuję zduplikowane wiadomości w mojej klastrowanej aplikacji node.js/socket.io/redis pub/sub

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 6 kluczowych wskaźników monitorowania Redis, które musisz obserwować

  2. Jak mogę usunąć obiekty z Redis, które są dodawane w czasie rzeczywistym?

  3. parametr maxmemory w redis.conf

  4. Najlepszy wzorzec do obsługi pętli asynchronicznych w Node.js

  5. Jaka jest korzyść z klastrowania Redis na różnych hostach?