sql >> Base de Datos >  >> NoSQL >> Redis

Recibo mensajes duplicados en mi aplicación agrupada node.js/socket.io/redis pub/sub

He estado luchando con cluster y socket.io. Cada vez que uso la función de clúster (aunque uso el clúster de Nodejs incorporado) tengo muchos problemas de rendimiento y problemas con socket.io.

Mientras intentaba investigar esto, estuve investigando los informes de errores y similares en socket.io git y cualquiera que use clústeres o balanceadores de carga externos en sus servidores parece tener problemas con socket.io.

Parece producir el problema "el cliente no debe volver a conectarse", lo que verá si aumenta el registro detallado. Esto aparece mucho cada vez que socket.io se ejecuta en un clúster, así que creo que vuelve a ser así. Es decir, el cliente se conecta a una instancia aleatoria en el clúster socket.io cada vez que hace una nueva conexión (hace varias conexiones http/socket/flash al autorizar y más todo el tiempo más tarde cuando busca nuevos datos).

Por ahora, he vuelto a usar solo 1 proceso socket.io a la vez, esto podría ser un error, pero también podría ser una deficiencia de cómo se construye socket.io.

Agregado:mi forma de resolver esto en el futuro será asignar un puerto único a cada instancia de socket.io dentro del clúster y luego almacenar en caché la selección del puerto en el lado del cliente.