页游服务器压力测试方案

  1. 云栖社区>
  2. 博客>
  3. 正文

页游服务器压力测试方案

石门-archy 2016-04-20 17:24:54 浏览970
展开阅读全文

目的:

  为保证单个服务器的在线玩家数量,在项目的初期,应该通过压力测试来预测在线玩家的上限!

 

工程说明:

  我们本着实验主义,认为一切理论皆是假设,而实践实验是检验真理的唯一标准!页游服务器取自大型端游单服务器\单地图服务器的设计;用单线程去处理所有的逻辑,IO,数据库,文件操作各有负责的线程,线程之间通信用异步消息队列!  这样方案的优势在于,化解了多进程部署上的问题和运营成本,吸取了多线程的优势,而不必在编写逻辑的时候考虑多线程,在一定程度上解放程序员,即加快开发进度,以适应竞争日益激烈的页游!

 

测试指标

  1: 网络库的吞吐量!

  2: 网络延迟                           

  3: 内存使用状况                  

  4: 最高玩家在线

 

方案1:

  采用PINGPONG测试方案,客户端向服务器发送消息包,服务端接收到客户端的消息包,将消息报原封不动的返回给客户端,客户端接收到消息包,再次发送给服务器,如此往复!

方案2:

  在方案1的基础之上,每一个客户端发送的消息包,携带当前时间,当客户端收到服务端的返回时,用当前时间减去消息包所携带的时间,就是网络延迟

方案3:

  内存的使用状况,还是通过操作系统的工具来,比如top等!

方案4:

  外网环境模拟:

  在开服期间,页游平台向服务器不断的导入玩家;导入用户的期间,是单服压力最大阶段,最高在线预计在3k左右;这3k的人分布在三个地图之上,地图较大,屏幕内大概也就10个左右的玩家。我们做很多机器人来模拟大量玩家。在开服几天,每个玩家的视野大概也就是一屏幕的地图,每个屏幕上的地图大概分散着10(N个,可调整)个左右的玩家。这十个玩家,每走动一次,都要将自己的最新状态广播给周围的这十个玩家。我们将地图分散开来,假设每一张地图上面就只有十个玩家,我们开启200个这样的地图,这样就是2k的人在线,每一个机器人,每秒向后端做3(N,可以调整)个请求,后端将这样一个请求广播给给图上其他的9个玩家并且返回给机器人自己!这样就模拟了2k在线的情况;如果我们开启300个地图,那么也就是3k在线。以此类推!

  在这样的模拟环境中,我们要检测一些数据,

     1:网络延迟,在100ms左右,可以容忍;

     2:服务器每秒处理的消息数,

     3:内存状况监测,查看是否有内存泄露问题!

     4:调整每个地图上的玩家个数,和开启的地图数目

     5:调整机器人每秒的请求数

客户端技术:

    起初我的方案是用线程去去模拟玩家机器人,随后弃之~,其实只要用socket就好,用epoll去管理N个socket(机器人)的发送和接受数据!发送一般为定时发送,接受则需要epoll的机制。故压力测试的客户端,可以和服务端公用一个底层!

 

PS:

     欢迎各位大神来讨论,游戏服务器技术讨论群:156519985,欢迎有经验的人来!

网友评论

登录后评论
0/500
评论
石门-archy
+ 关注