游戏服务器压力测试

游戏项目上线之前,一般需要对项目做个压力测试,从中可以评估项目的性能瓶颈,做出针对性的优化,这样就需要设计一个压力测试工具了。这里主要针对RPG游戏
  1. 单线程还是多线程。游戏业务逻辑还是要单线程,这样上层业务逻辑不用考虑并发问题,降低编码复杂 度。如果整体只用一个线程支撑2000机器人跑压力测试,如果没有寻路,没有其他一些耗时的操作,还是可 以支撑的。如果整体只用一个线程跑多个机器人,那么可以多开几个进程这样也可以把人数压上去,缺点是 不好管理。如果能用一个项目就支撑2000人 这样就方便很多。可以根据玩家ID或者分配一个一个ID绑定到 对应的线程上跑逻辑,这样也是可以的。
  2. 网络通信框架就直接选择Netty了,共用Bootstrap,EventLoopGroup。机器人客户端收到服务器发送到消息放到自己的线程去处理。
  3. RPG游戏 一般都是注册 选服 创角 登录游戏 进入场景 开始做任务 一般都是这个流程,所以这些步骤少不了,需要针对这几个步骤写下对应的逻辑。其中创角里有些数据肯定会随机下。针对做任务这里需要说下,一般完成一个任务,可能需要去杀怪,采集,找NPC。。。其他条件完成,要完成一件事,就必须先把其他事情完成。这样就会类似一个入栈和出栈的过程。所以核心需要存储这些需要完成的任务,完成一个就丢弃一个,继续完成下一个直到栈的数据都出完了 那么就完成这个任务了,可以继续接取下一个任务。只要任务做不完 那么就会一直循环下去。有些时候会发现机器人接取一些任务的时候接取不了,比如等级不够 道具不足这些 ,那么就需要发送专门的GM指令来跳过这些步骤了。
  4. 机器人行为模拟的时候,尽量模拟真实的玩家,不然压力测试的结果就不太准确了。比如做任务的时候需要寻路 或者杀怪的时候需要寻路。就不能简单的直接跳到对应的坐标,还是需要机器人走过去。做任务的时候选取对应的怪 NPC谈话 一般有些时间间隔的任务 都可以随机下时间再去做对饮的任务。每个机器人客户端应该也是有自己的场景数据的。场景里有哪些玩家 有哪些NPC 怪都需要记录,根据服务器AOI通知来添加或者删除对应的对象,更新对应对象的坐标或者其他信息。这样就可以根据一些特殊场景编写对应的逻辑脚本。
  5. 每条命令只做对应的逻辑,如果机器人登录场景不是去做任务 而是去一个场景相互砍杀或者做其他的行为时,只需要修改自己对应的执行逻辑脚本就可。
  6. 整体代码编写完之后,开始进行压力测试,客户端和服务器避免在一台机器上。因为一台机器上同时跑2000人在线,所以100M带宽的网卡就很大可能跑满了。可以分多台机器测试。然后根据log查看服务器那些逻辑比较耗时,最大可以支撑多少人在线,带宽多大。为了节省带宽,就需要针对那些频繁发送的协议做下优化。比如AOI的协议 如果是json 那么可以变成protobuf 或者自定义协议,这样可以减少每次发送的数据,可以节省不少成本 同时降低内存的分配。还有些不需要频繁发送的协议就可以减少发送次数。CPU,内存的消耗。当你发现数量上去的时候,内存 CPU消耗都是很快的。找出这些最消耗CPU 内存的代码做优化即可。
  7. 机器人压力测试一般主要针对任务这块编写 测试性能瓶颈 其他的一些模块就需要平时开发人员的自己的注意了。因为针对每个模块都去编写测试代码 成本太高了。比如充值这些很重要的功能 就不要出现些常识性错误,导致充值稍微人数多了 充值都能卡主。
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值