游戏跨进程数据读写承载压力大

梦醒的夏天

用gatewayworker做的捕鱼,房间数据用GlobalData原子实现,4个玩家在同一个房间不在同一个进程,每次发射子弹(每秒5发),都要判断取当前房间鱼数组判断当前命中鱼是否存在,击杀后修改数组,房间出鱼更新也要往数组里加 ,都是原子实现, 阿里云8核ic5开24个business 进程 ,gateway 和 register 服务在另一台服务器 ,400多同时在线 大概一百多房间,8个cpu都在30-40%之间,玩家使用技能的时候已经感觉到延迟了,请问我这种情况应该怎么解决

1957 1 0
1个回答

walkor

可以参考这个文章。
https://wenda.workerman.net/question/523
 
如果我做这种游戏的话我会考虑用单进程去做,这样可以方便的做全局数据共享,避免频繁的进程间通讯,可以最大限度的降低服务器负载,提升系统稳定性。并且可以近乎无限扩展服务器。
 
400多在线,这个方案估计1个进程应该就够了。更多在线就开更多的这种进程实例即可。

  • 梦醒的夏天 2019-04-29

    感谢回答,现在已经骑虎难下了,这么多用户,服务器已经写到了这个地步很难改变,用户数还在增加

  • 梦醒的夏天 2019-04-29

    如果单进程做的话,您的建议是不用GatewayWorker,而是用WorkerMan吗,开单独进程负责房间分配,游戏进程负责游戏逻辑?

  • walkor 2019-04-30

    对这种强交互类型的建议用workerman。分房间策略可以用单独进程做,也可以规定一些策略比如房间号里携带服务器的ip和端口,客户端进入房间直接连对应ip和端口就到一个进程了。

  • 梦醒的夏天 2019-05-02

    @1:感谢

年代过于久远,无法发表回答
🔝