页游服务器压力测试方案

目的:

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

 

工程说明:

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

时间: 2024-11-02 12:16:12

页游服务器压力测试方案的相关文章

关于一种页游服务器的想法

     这几天一直写上层逻辑,因为是sns游戏的,所以压力不是很大,但还是想做一套页游mmorpg类游戏的框架.闲暇时候就玩玩天龙八部,读读征途的代码.机缘巧合,遇见了之前天龙八部的服务器引擎工程师,交流了很久才知道,现在网上流传的天龙八部的版本已经很老很老了.据他说现在的天龙八部的服务器框架也加上了网关的设计,负责网络均衡:添加了消息队列,分离了通信和逻辑处理.       不过我仍然觉得旧框架可以负载现在的页游服务器,旧的线程机制是这样,每个线程负责一个地图,并且负责这个地图上面玩家的与客

基于Kubernetes的分布式压力测试方案

压力测试是用来检测系统承载能力的有效手段.在系统规模较小的时候,在一台空闲的服务器上使用ab,wrk,siege等工具发起一定量的并发请求即可得到一个初步的测试结果.但在系统复杂度逐步提高,特别是引入了负载均衡,微服务等架构后,单机的压力测试方案不再可用,企业需要搭建分布式测试集群或者付费使用外部供应商提供的压力测试服务. 不管是采取自主搭建或是采用外购的手段,都会面临系统使用率不高以及成本的问题.基于Kubernetes的动态资源调度功能,以及Kubernetes集群的动态伸缩特性,我们可以充

简单问题,关于页游服务器部署

问题描述 我想问,页游服务器,在生产环境是用console直接跑,还是做成j2EE的工程,放tomcat容器,或者说还有其它方式部署?本人做j2EE,想转行,问个菜的问题,希望行内人士能解答一下,谢谢! 解决方案 解决方案二:upthis解决方案三:有用jvm的,tomcat的,jboss的,maven的.

利用ab压力工具对服务器进行压力测试

在使用之前,需要先确认是否服务器安装了Apache Http Server,如果没有安装,则需要先安装: $ sudo yum install httpd $ ab -V This is ApacheBench, Version 2.3 <$Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Fo

使用Apache ab工具对Apache服务器进行简单的压力测试_Linux

1.安裝ab命令 sudo apt-get install apache2-utils 2.ab命令参数说明 Usage: ab [options] [http[s]://]hostname[:port]/path  Options are:      //总的请求数 -n requests Number of requests to perform //一次同时并发的请求数 总的请求数(n)=次数*一次并发数(c) -c concurrency Number of multiple reque

sysbench对mysql压力测试的详细教程_Mysql

前言 在对网站整体性能进行benchmark时,可以使用多种工具,比如大名鼎鼎的ab(Apache bench),http_load等工具.这里我们不关注他们的使用,如果你想了解,可以自行在网上找到答案. 重点来说MySQL的基准测试如何进行,也有很多种工具来供我们选择,比如mysqlslap.sysbench.Super Smack等,其中mysqlslap的使用MySQL官网给出了介绍,Super Smack是服务器压力测试强有力的工具,那么sysbench便是我们进行MySQL基准测试的很

使用 JMeter 完成常用的压力测试

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.  ------------------------------------------------------------------------------

以外行人的眼光谈压力测试

不是专职做压力测试这行当的,只能是以自己的经验来以外行人的眼光来说说压力测试,压力测试并不仅仅是个压力测试的过程,而是一个相当系统和复杂的工程,我认为压力测试是为了让系统达到所期望的运行效果以及承受所期望的压力,这也就要求压力测试应该帮助性能调优团队,为其提供一定程度的指导,在这里我不将压力测试和性能调优分的那么清楚了,在我看来,压力测试过程包括了:明确压力测试的目标.制定压力测试方案.进行压力测试.分析压力测试结果.寻找瓶颈并进行调优以达到目标,在这篇blog中来细看下这几个过程以及常用的方法

压力测试中存在的问题

压力测试中存在的问题 (What) 什么是压力测试 软件压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分.软件压力测试的基本思路很简单: 不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试. 通常要进行软件压力测试的资源包括内部内存.CPU 可用性.磁盘空间和网络带宽. 压力测试涵盖,性能测试,负载测试,并发测试等等,这些测试点常常交织耦合在一起. 压力测试存在那些问题 我归纳一下又几点: 操作系统默认安装,在未做任何优化的情况下实施压力测试