像我们这种分布式的框架,针对sendToUid,在某个进程中其实无法感知到具体的uid绑定的连接是在哪个服务节点的进程中的,当前的实现是应该属于广播式的把发送指令广播到所有的gateway进程中,让他们自己判断当前的进程中是否存在需要被发送的uid所绑定的链接,从而完成消息发送,但是这样一来,如果作为一款IM的应用, 假如: 10万的用户在线量,平均每个用户每秒发送一条,那么按照这样广播的发送消息方式。 是不是意味...
现在线上是用的Gateway,分布式架构,Register,Connect,Worker都分开容器部署,现在有个很奇怪的现象,关于worker进程的容器主机内存会一直持续增长,连续跑3天 内存使用多占了2个G,但是系统监控和atop查看到 整个php的worker进程一直都是在 300-400M左右,总之都不会超过1G,但是我一旦重启worker进程之后立马可用内存多出来2个G。。。。。,完全找不到头绪,进程内存占用...
"continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in file /data/gateway/remote/vendor/workerman/workerman/Protocols/Http.php on line 555 是不是...
因为 现在BS进程中储存了一些游戏配置数据,但是在做更新表时候我想通过reload的方式刷掉旧配置信息而保证连接服务关闭,单机的话reload还好,但是分布式而且还是放在容器中我感觉实在想不出方法统一执行reload的方法了。。。求救...
如题,前段时间突然遇到了需要GateWay这边作为RPC服务端了,之前业务一直是作为RPC客户端去调Yii2那边的?但是业务代码里好多都是获取绑定的UID来处理后续的逻辑的。。。 现在的需求是,gateway这边是负责游戏逻辑的,但是在充值的时候需要给用户添加很多复杂的东西,但是充值的回调又是在HTTP服务这边,这样一来,如果不用RPC的话感觉搬砖的工作量很大,而且还很容易出错,所以请问各位大佬有没有办法在gat...
需求是这样的,register一类容器,gate和bs进程分一类,现在每个集群保持一个register节点,暂时是通过数据库来持久化register节点的信息,方便gate和bs进程通过标签找到对应集群的register,但是现在感觉数据库持久有点僵硬,而且也是写在Woker::run之前的,不太准确,想通过zookeeper来感知register服务状态,不知道注册服务和停止服务应该写在Woker哪个方法中...
之前提到了在docker中内核调优的问题,后面由于在容器镜像中会有部分限制sysctl的设置,直接使用了net模式就解决了,现在遇到的问题是在docker镜像中无法 -d守护进程运行,无限 start in DAEMON mode,就是起不来,不加 -d守护进程的话就毫无影响 1.初期以为是没有 /bin/bash的原因,运行完 start -d后,容器就关闭了,后面把commnd前置了 /bin/bash之后没有关...
因为涉及到分布架构,用docker的话方便部署一点,但是那个内核调优这块怎么处理?到底在docker容器中调整内核的配置还是说只要主机的内核配置设置好就OK了?(我下载那个centos镜像还没有这个/etc/sysctl.conf文件怎么破。。。。。。 ) 而且在内核调优章节中 有一点是设置...
在onMessage中把业务逻辑拆分出来比较好的实现方式是什么? 在同一进程中,如何做到连接之间不相互污染数据? ================================ 刚刚测试了一下同一个进程中在其中的一个连接发送阻塞标识信息,执行for600W次的file_put_contents写入操作,其他连接发送消息会被挂起,甚至会出现超时, process_timeout: #1 /data/gateway/g...
因为最近可能会选择用PHP作为游戏服务器,其实游戏整体实时交互可能要求并不高,确实可以用短连接API来完成功能,但是游戏前端以前用惯了websocket,而且游戏可能会出现一些玩家实时聊天,在这样的情况下,可能需要服务端搭建这样的一个websocket服务。因为之前一直没有接触过这种长连接的应用场景,所以在这里想问问老鸟帮忙解惑一下这方面的问题,谢谢了哈! 本身想结合TP或者YII这类常用的框架,因为框架带来的便利性...