页游服务器压力测试方案

news/2024/8/26 16:47:46

目的:

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

 

工程说明:

  我们本着实验主义,认为一切理论皆是假设,而实践实验是检验真理的唯一标准!页游服务器取自大型端游单服务器\单地图服务器的设计;用单线程去处理所有的逻辑,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,欢迎有经验的人来!

 

 

转载于:https://www.cnblogs.com/archy_yu/p/3291878.html


http://www.niftyadmin.cn/n/1178020.html

相关文章

linux操作系统做服务器配置,Linux操作系统的时间服务器配置方法

时间服务器的IP为:192.168.10.1 1). # rpm -ivh ntp-4.1.2-4.EL3.1.i386.rpm 2). # vi /etc/ntp.conf 注释一行 restrict default ignore 加入一行 restrict 192.168.10.0 mask 255.255.255.0 notrust nomodify notrap 3). # vi /etc/ntp/step-tickers 加入一行 pool时间服务器…

过滤器、绑定事件、动画

一、基本过滤器 语法描述返回值:first选取第一个元素单个元素:last选取最后一个元素单个元素:not(selector)选取去除所有与给定选择器匹配的元素集合元素:even选取索引是偶数的所有元素(index 从0开始)集合元素:odd选取索引是奇数的所有元素(index 从0开始)单个元素:eq(index)选…

Linux系统基础命令

这是看itercast的学习笔记 Linux系统基础命令 日期时间 命令date用以查看、设置当前系统时间:格式化显示时间: %Y--%m--%d命令hwclock(clock)用以显示硬件时钟时间命令cal用以查看日历uptime用以查看系统运行时间输出、查看命令 命令echo用以显示文件内容命令cat用以显示文件内…

linux连接其他机器端口,Linux机器相互登录

在CentOS-02 虚拟机里面连接 CentOS-01在CentOS-01 中查看负载,看哪个设备在连接着#w在CentOS-02 中连接 CentOS-01#ssh 192.168.136.128在CentOS-01 中查看负载#w这个时候就发现多了个 192.168.136.129 也就是CentOS-02严格的写法远程连接 ssh usernameip查看下当前…

转:HTTP协议--- multipart/form-data请求分析

转自:http://blog.csdn.net/five3/article/details/7181521 首先来了解什么是multipart/form-data请求: 根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有…

敏捷开发的几条原则

尽早地、持续地交付有价值的软件来使客户满意。一方面让客户看到一个渐增的系统,另一方面可以更早的确认实现的功能是客户需要的,交付的越频繁,最终的产品质量越高拥抱变化,即使是项目后期。敏捷过程能够驾驭变化,为客…

linux红帽mysql空间扩容空间,linux mysql扩容var目录下空间

linux mysql扩容var目录下空间linux mysql扩容var目录下空间1:原有目录可用不到1G,申请500G硬盘后;进行扩容;df -h2:fdisk /dev/sdb (对sdb这块磁盘没有被使用的空间进行分区,联想Windows操作系统)使用…

cocos2d-x自制工具05:Spriter动画编辑器的cocos2d-x运行库

Spriter动画编辑器是去年开始兴起的一个还不错的编辑器。使用Qt编写,跨平台。但是项目后期更新速度不是很快,并且bone系统总是有一些问题。在去年年底和今年年初的时候,被Spine超越。平心而论,Spriter编辑器是一款很不错的工具&am…