zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

页游服务器压力测试方案

服务器测试 方案 压力
2023-09-14 08:57:59 时间

目的:

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

 

工程说明:

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


阿里云主机(VPS主机)上搭建Anki服务器及Anki服务器搭建方案分析 大家都知道Anki是一款优秀的记忆软件,拥有优秀的记忆算法,高度可定制性,跨几乎所有平台等诸多优点。但由于AnkiWeb的服务器在国外,国内同步的同步速度真的是相当的慢- -,如果只有卡片只有文字内容还能接受,如果记忆库中有许多媒体文件(图片,音频等),同步速度根本没法忍- -...如果手动同步,又太麻烦(好吧其实是我懒- -),还好我们可以通过自己搭建服务器的办法达到较快的同步速度。