sql >> Database teknologi >  >> NoSQL >> Redis

Jeg modtager duplikerede meddelelser i min klyngede node.js/socket.io/redis pub/sub-applikation

Jeg har kæmpet med cluster og socket.io. Hver gang jeg bruger klyngefunktion (jeg bruger dog den indbyggede Nodejs klynge) får jeg en masse ydeevneproblemer og problemer med socket.io.

Mens jeg forsøgte at undersøge dette, har jeg gravet rundt i fejlrapporter og lignende på socket.io git, og alle, der bruger klynger eller eksterne belastningsbalancere til deres servere, ser ud til at have problemer med socket.io.

Det ser ud til at give problemet "klient, der ikke er håndtrykt, klient skal oprette forbindelse igen", som du vil se, hvis du øger den detaljerede logning. Dette vises meget, når socket.io kører i en klynge, så jeg tror, ​​det vender tilbage til dette. Dvs. klienten bliver forbundet til randomiseret instans i socket.io-klyngen, hver gang den laver en ny forbindelse (den laver flere http/socket/flash-forbindelser, når den godkendes og flere hele tiden senere, når der søges efter nye data).

For nu er jeg vendt tilbage til kun at bruge 1 socket.io-proces ad gangen, dette kan være en fejl, men det kan også være en mangel ved, hvordan socket.io er bygget.

Tilføjet:Min måde at løse dette på i fremtiden vil være at tildele en unik port til hver socket.io-instans inde i klyngen og derefter cache-portvalg på klientsiden.



  1. Mongo-forespørgsel, der bruger mongoid i rails-app, der forårsager markørtimeoutfejl

  2. Sådan får du adgang til MongoDB

  3. node.js database

  4. Hvordan sender socket.io beskeder på tværs af flere servere?