CNode

websocket 使用pm2的 cluster模式

问答
3312xiaoguai发布于8 年前最后回复8 年前8 回复5662 浏览0 收藏

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

查看回复

回复 (8)

J
JustinLiao1314#1·8 年前
引用 im-here@312xiaoguai 好像是叫个ip hash吧,你搜搜 Nginx的ip hash功能 我以前也有你类似的需求,不过后来通过逻辑来解决了

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

B
brucecodezone#2·8 年前

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

3
312xiaoguai#3·8 年前

十分钟惨案

D
DerekYeung#4·8 年前

4小时惨案

3
312xiaoguai#5·8 年前

一天惨案

I
im-here#6·8 年前

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

3
312xiaoguai#7·8 年前
引用 im-here估计搞不定 尝试分多个端口,然后用Nginx粘性回话能不能搞定了

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

I
im-here#8·8 年前
引用 312xiaoguai@imhered 谢谢,就是比如A监听4000端口,B监听4001端口,用Nginx均衡器去分发到指定的进程?

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

参与回复
登录后即可参与回复。登录