sql >> Databasteknik >  >> NoSQL >> Redis

Jag tar emot dubbletter av meddelanden i min klustrade node.js/socket.io/redis pub/sub-applikation

Jag har kämpat med cluster och socket.io. Varje gång jag använder klusterfunktion (jag använder dock det inbyggda Nodejs-klustret) får jag många prestandaproblem och problem med socket.io.

Medan jag försökte undersöka detta har jag grävt runt felrapporter och liknande på socket.io git och alla som använder kluster eller externa belastningsbalanserare till sina servrar verkar ha problem med socket.io.

Det verkar ge problemet "klienten inte handskadad klient ska återansluta" som du kommer att se om du ökar den utförliga loggningen. Detta visas mycket när socket.io körs i ett kluster så jag tror att det återgår till detta. Dvs klienten blir ansluten till en randomiserad instans i socket.io-klustret varje gång den gör en ny anslutning (den gör flera http/socket/flash-anslutningar vid auktorisering och fler hela tiden senare vid polling efter ny data).

För närvarande har jag återgått till att bara använda en socket.io-process åt gången, detta kan vara ett fel men kan också vara en brist i hur socket.io är byggd.

Tillagt:Mitt sätt att lösa detta i framtiden kommer att vara att tilldela en unik port till varje socket.io-instans i klustret och sedan cacheportval på klientsidan.



  1. MongoDB 2.1 Aggregate Framework Summa av matriselement som matchar ett namn

  2. SQL vs NoSQL för ett lagerhanteringssystem

  3. Uppdatering av kapslade arrayer i mongoDB via mongo-skal

  4. Hur ställer jag in ett elasticache redis-kluster som slav?