websocket 使用pm2的 cluster模式
发布于 7 年前 作者 312xiaoguai 4879 次浏览 来自 问答

比如我使用pm2 部署2个 ws进程, 这样如果有1000个人连接的话,会有一部分人连接到进程A,剩下的人连接到进程B,实际上进入了2个房间,有没有方法能够 解决这个问题,比如一个请求过来,指定路由到进程A ,pm2应该是有负载分发机制,不知道是否支持指定进程处理

8 回复

十分钟惨案

一天惨案

估计搞不定 尝试分多个端口,然后用Nginx粘性回话能不能搞定了

@imhered 谢谢,就是比如A监听4000端口,B监听4001端口,用Nginx均衡器去分发到指定的进程?

@312xiaoguai 好像是叫个ip_hash吧,你搜搜 Nginx的ip_hash功能 我以前也有你类似的需求,不过后来通过逻辑来解决了

@imhered 你这样 同一个人 登陆 换个 IP 就换到 不同进程处理了,这种业务逻辑还是需要自己写 master 转发 socket 逻辑,不管是根据 用户 id 还是 ip 还是 其他的属性 From Noder

如果使用socket.io的话,一般cluster都要sticky模式 参考下这个库吧,https://github.com/uqee/sticky-cluster

回到顶部