用gatewayworker做的捕鱼,房间数据用GlobalData原子实现,4个玩家在同一个房间不在同一个进程,每次发射子弹(每秒5发),都要判断取当前房间鱼数组判断当前命中鱼是否存在,击杀后修改数组,房间出鱼更新也要往数组里加 ,都是原子实现, 阿里云8核ic5开24个business 进程 ,gateway 和 register 服务在另一台服务器 ,400多同时在线 大概一百多房间,8个cpu都在30-40%之间,玩家使用技能的时候已经感觉到延迟了,请问我这种情况应该怎么解决
可以参考这个文章。 https://wenda.workerman.net/question/523 如果我做这种游戏的话我会考虑用单进程去做,这样可以方便的做全局数据共享,避免频繁的进程间通讯,可以最大限度的降低服务器负载,提升系统稳定性。并且可以近乎无限扩展服务器。 400多在线,这个方案估计1个进程应该就够了。更多在线就开更多的这种进程实例即可。
感谢回答,现在已经骑虎难下了,这么多用户,服务器已经写到了这个地步很难改变,用户数还在增加
如果单进程做的话,您的建议是不用GatewayWorker,而是用WorkerMan吗,开单独进程负责房间分配,游戏进程负责游戏逻辑?
对这种强交互类型的建议用workerman。分房间策略可以用单独进程做,也可以规定一些策略比如房间号里携带服务器的ip和端口,客户端进入房间直接连对应ip和端口就到一个进程了。
@1:感谢
可以参考这个文章。
https://wenda.workerman.net/question/523
如果我做这种游戏的话我会考虑用单进程去做,这样可以方便的做全局数据共享,避免频繁的进程间通讯,可以最大限度的降低服务器负载,提升系统稳定性。并且可以近乎无限扩展服务器。
400多在线,这个方案估计1个进程应该就够了。更多在线就开更多的这种进程实例即可。
感谢回答,现在已经骑虎难下了,这么多用户,服务器已经写到了这个地步很难改变,用户数还在增加
如果单进程做的话,您的建议是不用GatewayWorker,而是用WorkerMan吗,开单独进程负责房间分配,游戏进程负责游戏逻辑?
对这种强交互类型的建议用workerman。分房间策略可以用单独进程做,也可以规定一些策略比如房间号里携带服务器的ip和端口,客户端进入房间直接连对应ip和端口就到一个进程了。
@1:感谢