网络服务器压力测试方法及系统的制作方法

文档序号:7665889阅读:239来源:国知局
专利名称:网络服务器压力测试方法及系统的制作方法
技术领域
本发明涉及一种网络测试领域,尤指一种网络服务器压力测试方法及系统。
背景技术
网络软件在公测之前,往往需要进行几轮压力测试,用于测试服务器负 载能力。当登陆网络软件服务器的人数达到一定量时,往往会出现登录困难、 同步緩慢、频繁断连等问题,这些是由服务器硬件质量、软件架构、网络带 宽所引起的。通过压力测试,可以确定一个服务器保持正常运行的人数上线, 从而提高运营品质。
另外,在登陆网络软件服务器的人数多的时候, 一些潜在的网络软件程 序问题更容易凸显,才能便于开发人员及早对其进行解决和优化。
现有的压力测试技术主要有以下两种方式
一种是公开发放一定数量的压力测试帐号,启用 一组压力测试服务器, 让用户进去体验。
另一种是开发人员内部进行测试,运用公司内部现有的网络、计算机资 源,通过一个电脑上启动多个客户端,同时运行所述软件。 第 一种发方丈压力测试帐号的方式主要缺点有以下
1、 压力测试帐号的发放需要宣传,让尚处于开发期的产品提前曝光。
2、 服务器的不稳定性往往会引起用户的不满,降低用户体验感与忠诚度。
3、 考虑玩家行为,往往会放弃调试模式,这就让测试中出现的一些问题 难以解决。
第二种开发人员内部测试的方式虽然可以避免第一种方式的缺点,但由 于公司网络、计算机资源往往有限,且游戏客户端CPU占用率大, 一台电脑 最多能带动三个客户端,测试的用户数量很难达到要求。
因此,如何提供一种网络服务器压力测试方法,既能达到网络服务器的 测试要求,又能避免网络产品的提前曝光,是本领域技术人员需要解决的技 术问题。

发明内容
本发明的目的是提供一种网络服务器压力测试方法,用于满足网络服务 器的测试要求,并且避免网络产品的提前曝光。
为解决上述问题,本发'明提供一种网络服务器压力测试方法,包括以下
步骤
A、 i殳定多个虚拟客户端;
B、 建立服务器与每个虚拟客户端之间的链接;
C、 建立指令读取线程和虚拟客户端循环线程;
D、 每个虚拟客户端存储需要测试的虚拟客户端行为相关的客户端数据;
E、 虚拟客户端循环线程遍历所述每个虚拟客户端,分别接收服务器的协 议包;
F、 判断所述协议包是否与所述需要测试的虚拟客户端行为相关,如果是 执行步骤G,否则结束;
G、 解析所述协议包的内容,更新所述虚拟客户端内部状态,读取所述虚 拟客户端指令队列中的指令,执行相应操作。
优选地,所述步骤G进一步包括向所述服务器传送协议包,维持所述 虚拟客户端正常行为逻辑。
优选地,所述更新所述虚拟客户端内部状态,具体为更新所述虚拟客户 端的逻辑,维持所述虚拟客户端正常行为逻辑。
优选地,所述步骤G具体包括
Gl、解析所述协议包的内容,
G2、将所述虚拟客户端音效音乐的发生转化为空操作。
优选地,将所述虚拟客户端音效音乐的发生转化为空操作,具体为所述
逻辑调用声音接口通过调用全局接口实现,并将所述全局接口设置为空操作。 优选地,所述步骤G进一步包括 G3 、将所述虚拟客户端画面绘制的发生转化为空梯:作。 优选地,将所述虚拟客户端画面的绘制的发生转化为空操作,具体为所
述逻辑调用图像接口通过调用全局接口实现,并将所述全局接口设置为空操作。
优选地,所述方法进一步包括所述指令读取线程响应键盘消息,将键 盘消息翻译成所述虚拟客户端的指令,压入所述虚拟客户端指令队列中。
本发明还提供一种网络服务器压力测试系统,包括多个虚拟客户端、月l
网络消息处理单元和客户端逻辑单元;
所述服务器与每个虚拟客户端之间建立链接;
所述虚拟客户端包括虚拟客户端存储单元,所述虚拟客户端存储单元存 储需要测试的所述虚拟客户端行为相关的客户端数据;
虚拟客户端循环线程单元遍历所述每个虚拟客户端,分别接收所述服 务器的协议包;
网络消息过滤单元过滤与所述需要测试的虚拟客户端行为不相关的协 议包;
网络消息处理单元处理所述网络消息过滤单元过滤后的协议包; 客户端逻辑单元根据所述网络消息处理单元的处理结果,更新所述虚 拟客户端内部状态。
优选地,所述系统进一步包括呈现适配器;
所述呈现适配器用于将所述虚拟客户端音效音乐的发生和/或所述虚拟客 户端画面的绘制的发生转化为空操作。
与上述现有技术相比,本发明实施例所述网络服务器压力测试方法,设 定多个虚拟客户端,在服务器与所述每个虚拟客户端之间均建立了链接,通 过建立的虚拟客户端循环线程遍历所述每个虚拟客户端,接收服务器的协议 包,用一个进程,代替多个客户端进程。并且有判断所述协议包是否与所述 需要测试的虚拟客户端行为相关的过滤步骤和处理步骤,通过更新虚拟客户 端内部状态读取所述虚拟客户端指令队列中的指令,执行相应操作。本发明 所述方法能完成客户端的一些普遍行为,能够实现对大规模网络服务器的压 力测试。本发明所述方法只需研发人员在公司内部就可以实现,可以避免网 络服务器产品的提前曝光。


图1是本发明所述网络服务器压力测试方法第一种实施例流程图 图2是本发明所述网络服务器压力测试方法第二种实施例流程图 图3是本发明所述网络服务器压力测试系统第一种实施例结构图 图4是本发明所述网络服务器压力测试系统第二种实施例结构图
具体实施例方式
本发明提供一种网络服务器压力测试方法,用于满足网络服务器的测试 要求,并且避免网络产品的提前曝光。
参见参考图1,该图为本发明所述网络服务器压力测试方法第一种实施例 流程图。
本发明第 一种实施例所述网络服务器压力测试方法,包括以下步骤 S100、 i殳定多个虚拟客户端。 虚拟客户端可以通过机器人虚拟实体来实现。
分为三个系统机器人指令控制系统、机器人管理系统和机器人模拟实体。
机器人指令控制系统用于从键盘读取指令,指令含有操作码、参数、 和操作对象机器人的ID,用来控制某个机器人的特殊行为。
机器人管理系统用于管理进程内所有机器人实体,可以对特定ID机器 人进行查询,统一建立、释放,同时负责网络包与用户指令的转发。
机器人模拟实体用于模拟客户端登录,拦截网络包,更新状态信息, 向服务器发包等。
S200、建立服务器与每个虚拟客户端之间的链接。
每个虚拟客户端与网络服务器之间均建立链接。
S300、建立指令读取线程和虚拟客户端循环线程。
现有多个客户端进程同时运行,CPU、显卡负担严重,能够模拟的客户 端数量较少。由于进程切换引起操作系统时间片抢用,使得进程上下文切换 代价过高。
此指令读取线程和虚拟客户端循环线程的建立是提高机器人模拟量的关 键。通常, 一个进程拥有的理想线程数量是CPU数量乘以2再加2,如果线 程太多,由于线程上下文切换引起的开销会很大,反而降低效率。
目前有一些模拟程序将每个客户端用 一个线程来模拟,这样效率是很低 的,不但线程上下文切换频繁,且线程之间存在竟争,如果一个线程长时间 不被激活,那么很容易被服务器踢掉。
本模拟程序仅仅启用两个线程指令读取线程和虚拟客户端循环线程, 中间设有一个共享的临界区代码,维持一个机器人指令队列。
指令读取线程用于响应键盘消息,将键盘消息传入机器人指令控制系统, 翻译成可执行的机器人指令压入指令队列中。
注意指令读取线程平时会在键盘输入系统上等待,长时间处于Idle状态, 因此不会引起从虚拟客户端循环线程到指令读取线程间的频繁切换。
虚拟客户端循环线程用于机器人管理系统依次遍历所有机器人模拟实体
从网络读取所有协议包,更新内部状态,并从机器人指令队列中取出指令, 让操作对象机器人模拟实体执行。
整个进程,几乎所有时间片都放在了虚拟客户端循环线程上,这样CPU 就得以充分地利用。
S400、每个虚拟客户端存储需要测试的虚拟客户端行为相关的客户端数据。
机器人模拟的通常不是所有客户端行为,而是客户端行为的一个子集。 因此,每个虚拟客户端必须存储与子集相关系的一些客户端数据。
例如要模拟客户端走路行为,需要存储客户端实际位置,位移速度, 加速度等信息。
例如要模拟客户端发技能,则需要存储角色技能列表,技能施展条件 设定以及选中目标位置、距离等。
S500、虚拟客户端循环线程遍历所述每个虚拟客户端,分别接收服务器 的协议包。
S600、判断所述协议包是否与所述需要测试的虚拟客户端行为相关,如 果是执行步骤S700,否则结束。
机器人模拟的是客户端行为的一个子集。那么,虚拟客户端需要接收与 这个子集相关的 一些从服务器传输过来的协议。
一个机器人模拟实体维持一条与服务器之间的链接, 一个机器人模拟进 程会向服务器建立多条连接。
机器人模拟实体从自己的连接上收取网络协议包,判断协议类型,如果
与模拟行为子集相关,则对协议包进行处理。
S700、解析所述协议包的内容,更新所述虚拟客户端内部状态,读取所 述虚拟客户端指令队列中的指令,执行相应操作。
接收到协议包后,解析协议包的内容,更新所述虚拟客户端内部状态,
对客户端逻辑系统的相应的数据进行更新,并在需要时往服务器回传协议包, 维持正常服务器客户端行为逻辑。
当然,根据虚拟客户端性质',也可选择在客户端逻辑系统里处理回传协 议包逻辑。
虚拟客户端循环线程用于机器人管理系统依次遍历所有机器人模拟实体 从网络读取所有协议包,更新内部状态,并从机器人指令队列中取出指令, 让操作对象机器人模拟实体执行。
本发明实施例所述网络服务器压力测试方法,设定多个虚拟客户端,在 服务器与所述每个虚拟客户端之间均建立了链接,通过建立的虚拟客户端循 环线程遍历所述每个虚拟客户端,接收服务器的协议包,用一个进程,代替 多个客户端进程。并且有判断所述协议包是否与所述需要测试的虚拟客户端 行为相关的过滤步骤和处理步骤,通过更新虚拟客户端内部状态读取所述虚 拟客户端指令队列中的指令,执行相应操作。本发明所述方法能完成客户端 的一些普遍行为,能够实现对大规模网络服务器的压力测试。本发明所述方 法只需研发人员在公司内部就可以实现,可以避免网络服务器产品的提前曝 光。
参见图2,该图为本发明所述网络服务器压力测试方法第二种实施例流程图。
本发明所述网络服务器压力测试方法第二种实施例相对第一实施例所述 步骤S700包括了三个小步骤。 S100、 i殳定多个虛拟客户端。 虚拟客户端可以通过机器人虚拟实体来实现。
S200、建立服务器与每个虚拟客户端之间的链接。
每个虚拟客户端与网络服务器之间均建立链接。
S300、建立指令读取线程和虚拟客户端循环线程。
本模拟程序仅仅启用两个线程指令读取线程和虚拟客户端循环线程, 中间设有一个共享的临界区代码,维持一个机器人指令队列。
指令读取线程用于响应键盘消息,将键盘消息传入机器人指令控制系统, 翻译成可执行的机器人指令压入指令队列中。
注意指令读取线程平时会在键盘输入系统上等待,长时间处于Idle状态,
因此不会引起从虚拟客户端循环线程到指令读取线程间的频繁切换。
虚拟客户端循环线程用于机器人管理系统依次遍历所有机器人模拟实体
从网络读取所有协议包,更新内部状态,并从机器人指令队列中取出指令, 让操作对象机器人模拟实体执行。
整个进程,几乎所有时间片都放在了虚拟客户端循环线程上,这样CPU
就得以充分地利用。
S400、每个虚拟客户端存储需要测试的虚拟客户端行为相关的客户端数据。
机器人模拟的通常不是所有客户端行为,而是客户端行为的一个子集。 因此,每个虚拟客户端必须存储与子集相关系的一些客户端数据。
S500、虚拟客户端循环线程遍历所述每个虚拟客户端,分别接收服务器 的协议包。
S600、判断所述协议包是否与所述需要测试的虚拟客户端行为相关,如 果是执行步骤S701,否则结束。
5701、 解析所述协议包的内容。
5702、 将所述虚拟客户端音效音乐的发生转化为空操作。
5703、 将所述虚拟客户端画面的绘制的发生转化为空操作。 对于虚拟客户端而言,内部数据改变往往会引起画面的改变、音效的触
发,这些逻辑代码往往遍布于呈现适配器逻辑代码中各个地方。但对于机器 人^:莫拟实体而言,这些绘制和音效处理没有任何好处,而且还会占用大量的
CPU时间片。呈现适配器用于在这些代码不容易去掉的时候,将客户端画面
的绘制和音效音乐的发生化为空操作。
例如:客户端可能调用 一个全局绘制音效接口如下
Interface IRepresenter
Bool DrawImage(ID,X,Y); Bool Sound(ID,Valoume);
};
IRepreseneter * g—representer;(逻辑中频繁调用这个全局绘制音效接口 ) 那么RepresentAdapter可这才羊实i见
Interface RepresentAdapter : public IRepreseneter
Bool DrawImage(ID,X,Y){} Bool Sound(ID,Valoume){}
并4巴g—representer i殳置成RepresentAdapter, 这是提高才几器人才莫拟凄t量 的关键。
一个机器人指令的执行可能伴随着一套状态机,指令逻辑状态机用于维 持这套状态机器,并反复查看与状态机相关的客户端逻辑系统的数据变换, 做相应的状态转换,在状态转换的过程中可伴随往服务器发包的逻辑,通过 指令逻辑状态机可实现机器人的AI (人工智能)逻辑。
本发明实施例所述网络服务器压力测试方法,设定多个虚拟客户端,在 服务器与所述每个虚拟客户端之间均建立了链接,通过建立的虚拟客户端循 环线程遍历所述每个虚拟客户端,接收服务器的协议包,用一个进程,代替 多个客户端进程。并且有判断所述协议包是否与所述需要测试的虚拟客户端 行为相关的过滤步骤和处理步骤,通过更新虚拟客户端内部状态读取所述虚 拟客户端指令队列中的指令,执行相应操作。本发明所述方法能完成客户端 的一些普遍行为,能够实现对大规模网络服务器的压力测试。本发明所述方 法只需研发人员在公司内部就可以实现,可以避免网络服器产品的提前曝 光。本发明实施例所述网络服务器压力测试方法,在实际使用中可以在一台 计算机上可模拟上百个机器人同时进行不同的操作。
本发明提供一种网络服务器压力测试系统,用于满足网络服务器的测试 要求,并且避免网络产品的提前曝光。
参见图3,该图为本发明所述网络服务器压力测试系统第一种实施例结构图。
本发明第 一种实施例所述网络服务器压力测试系统,包括多个虚拟客户 端2、服务器l、指令读取线程单元3和虚拟客户端循环线程单元4以及网络 消息过滤单元5、网络消息处理单元6和客户端逻辑单元7。
所述服务器1与每个虚拟客户端2之间建立链接。
所述虚拟客户端2包括虚拟客户端存储单元(图中未示出)。所述虚拟客
户端存储单元存储需要测试的所述虚拟客户端行为相关的客户端数据。
机器人模拟的通常不是所有客户端行为,而是客户端行为的一个子集。 因此,每个虚拟客户端必须存储与子集相关系的一些客户端数据。 '
例如要模拟客户端走路行为,需要存储客户端实际位置,位移速度, 加速度等信息。
例如要模拟客户端发技能,则需要存储角色技能列表,技能施展条件 设定以及选中目标位置、距离等。而这一部分信息的更新,都来自于网络消 息处理单元。
指令读取线程单元3用于响应键盘消息,将键盘消息传入所述虚拟客户 端2指令控制系统,翻译成虚拟客户端2可执行的指令压入指令队列中。
注意指令读取线程平时会在键盘输入系统上等待,长时间处于Idle状态, 因此不会引起从虚拟客户端循环线程到指令读取线程间的频繁切换。
虚拟客户端循环线程单元4:遍历所述每个虚拟客户端2,分别接收所述 服务器1的协议包。
虚拟客户端循环线程单元4依次遍历所有机器人模拟实体即虚拟客户端 2,从网络读取所有协议包,更新内部状态,并从虚拟客户端2指令队列中取 出指令,由虚拟客户端2执行相应操作。
整个进程,几乎所有时间片都放在了虚拟客户端循环线程上,这样CPU 就得以充分地利用。
网络消息过滤单元5:过滤与所述需要测试的虚拟客户端行为不相关的协 议包。
网络消息处理单元6:处理所述网络消息过滤单元过滤后的协-汉包。 客户端逻辑单元7:根据所述网络消息处理单元6的处理结果,更新所述 虚拟客户端2内部状态。
所述虚拟客户端存储单元存储需要测试的所述虚拟客户端行为相关的客 户端数据。机器人模拟的通常不是所有客户端行为,而是客户端行为的一个 子集。因此,每个虚拟客户端2必须存储与子集相关系的一些客户端数据, 这些数据也可以放在客户端逻辑单元7中。这样所述虚拟客户端2就可以省 略虚拟客户端存储单元,由客户端逻辑单元7实现存储需要测试的所述虚拟 客户端行为相关的客户端数据的功能。
所述客户端逻辑单元7存储的需要测试的所述虚拟客户端行为相关的客
户端数据的更新,都来自于所述网络消息处理单元6。
本发明实施例所述网络服务器压力测试系统,包括多个虚拟客户端2,在 服务器1与所述每个虚拟客户端2之间均建立了链接,虚拟客户端循环线程 单元4遍历所述每个虚拟客户端2,接收服务器1的协议包。这样就实现用一 个进程,代替多个客户端进程。并且网络消息过滤单元5能够将与所述需要 测试的虚拟客户端行为无关的所述协议包过滤,客户端逻辑单元7通过更新 虚拟客户端2内部状态读取所述虚拟客户端指令队列中的指令,执行相应操 作。本发明所述系统能完成客户端的一些普遍行为,能够实现对大规模网络 服务器的压力测试。本发明所述系统只需研发人员在公司内部就可以实现, 可以避免网络服务器产品的提前曝光。
参见图4,该图为本发明所述网络服务器压力测试系统第二种实施例结构图。
本发明所述网络服务器压力测试系统第二种实施例相对第 一 实施例增加 了呈现适配器。
所述呈现适配器8用于将所述虚拟客户端2音效音乐的发生和/或所述虚 拟客户端2画面绘制的发生转化为空纟喿作。
对于虚拟客户端2而言,内部数据改变往往会引起画面的改变、音效的 触发,这些逻辑代码往往遍布于呈现适配器8逻辑代码中各个地方。^f旦对于 机器人模拟实体而言,这些绘制和音效处理没有任何好处,而且还会占用大 量的CPU时间片。呈现适配器8用于在这些代码不容易去掉的时候,将客户 端画面的绘制和音效音乐的发生化为空才喿作。
本发明实施例所述网络服务器压力测试系统,还可以进一步包括指令逻 辑状态机9。
一个机器人指令的执行可能伴随着一套状态机,指令逻辑状态机9用于 维持这套状态机器,并反复查看与状态机相关的客户端逻辑单元7的数据变 换,做相应的状态转换,在状态转换的过程中可伴随往服务器l发包的逻辑, 通过指令逻辑状态机9可实现机器人的AI逻辑。
以上所述仅为本发明的优选实施方式,并不构成对本发明保护范围的限 定。任何在本发明的精神和原则之内所作的任何修改、等同替换和改进等,
均应包含在本发明的权利要求保护范围之内。
权利要求
1、一种网络服务器压力测试方法,其特征在于,包括以下步骤A、设定多个虚拟客户端;B、建立服务器与每个虚拟客户端之间的链接;C、建立指令读取线程和虚拟客户端循环线程;D、每个虚拟客户端存储需要测试的虚拟客户端行为相关的客户端数据;E、虚拟客户端循环线程遍历所述每个虚拟客户端,分别接收服务器的协议包;F、判断所述协议包是否与所述需要测试的虚拟客户端行为相关,如果是执行步骤G,否则结束;G、解析所述协议包的内容,更新所述虚拟客户端内部状态,读取所述虚拟客户端指令队列中的指令,执行相应操作。
2、 根据权利要求1所述的网络服务器压力测试方法,其特征在于,所述 步骤G进一步包括向所述服务器传送协议包,维持所述虚拟客户端正常行 为逻辑。
3、 根据权利要求1所述的网络服务器压力测试方法,其特征在于,所述 更新所述虚拟客户端内部状态,具体为更新所述虚拟客户端的逻辑,维持所 述虚拟客户端正常行为逻辑。
4、 根据权利要求1所述的网络服务器压力测试方法,其特征在于,所述 步骤G具体包括Gl、解析所述协议包的内容,G2、将所述虚拟客户端音效音乐的发生转化为空操作。
5、 根据权利要求4所述的网络服务器压力测试方法,其特征在于,将所 述虚拟客户端音效音乐的发生转化为空操作,具体为所述逻辑调用声音接口 通过调用全局接口实现,并将所述全局接口设置为空操作。
6、 根据权利要求4所述的网络服务器压力测试方法,其特征在于,所述 步骤G进一步包括G3、将所述虚拟客户端画面绘制的发生转化为空操作。
7、 根据权利要求6所述的网络服务器压力测试方法,其特征在于,将所 述虚拟客户端画面的绘制的发生转化为空操作,具体为所述逻辑调用图像接 口通过调用全局接口实现,并将所述全局接口设置为空梯:作。
8、 根据权利要求1所述的网络服务器压力测试方法,其特征在于,所述方法进一步包括所述指令读取线程响应键盘消息,将键盘消息翻译成所述虚拟客户端的指令,压入所述虚拟客户端指令队列中。
9、 一种网络服务器压力测试系统,其特征在于,包括多个虚拟客户端、元、网络消息处理单元和客户端逻辑单元;所述服务器与每个虚拟客户端之间建立链接;所述虚拟客户端包括虚拟客户端存储单元,所述虚拟客户端存储单元存 储需要测试的所述虚拟客户端行为相关的客户端数据;虚拟客户端循环线程单元遍历所述每个虚拟客户端,分别接收所述服 务器的协议包;网络消息过滤单元过滤与所述需要测试的虚拟客户端行为不相关的协 议包;网络消息处理单元处理所述网络消息过滤单元过滤后的协议包; 客户端逻辑单元根据所述网络消息处理单元的处理结果,更新所述虚 拟客户端内部状态。
10、 根据权利要求9所述的网络服务器压力测试系统,其特征在于,所 述系统进一步包括呈现适配器;所述呈现适配器用于将所述虚拟客户端音效音乐的发生和/或所述虚拟客 户端画面的绘制的发生转化为空操:作。
全文摘要
本发明公开一种网络服务器压力测试方法,包括以下步骤A.设定多个虚拟客户端;B.建立服务器与每个虚拟客户端之间的链接;C.建立指令读取线程和虚拟客户端循环线程;D.每个虚拟客户端存储需要测试的虚拟客户端行为相关的客户端数据;E.虚拟客户端循环线程遍历所述每个虚拟客户端,分别接收服务器的协议包;F.判断所述协议包是否与所述需要测试的虚拟客户端行为相关,如果是执行步骤G,否则结束;G.解析所述协议包的内容,更新所述虚拟客户端内部状态,读取所述虚拟客户端指令队列中的指令,执行相应操作。本发明提供一种网络服务器压力测试方法及系统,用于满足网络服务器的测试要求,并且避免网络产品的提前曝光。
文档编号H04L12/26GK101184001SQ20071017961
公开日2008年5月21日 申请日期2007年12月14日 优先权日2007年12月14日
发明者洁 姚 申请人:北京金山软件有限公司;北京金山数字娱乐科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1