游戏服务器压力测试方法、装置、电子设备及存储介质与流程
未命名
10-08
阅读:94
评论:0
1.本发明涉及计算机技术领域,特别涉及一种游戏服务器压力测试方法、装置、电子设备及存储介质。
背景技术:
2.网络游戏一般都采用客户端/服务端的架构,特别是面向海量玩家的产品,成千上万的玩家可能会在同一时刻对游戏服务器进行访问,为了保证玩家的游戏体验,在游戏上线前掌握游戏服务器的承载能力是非常必要的,因此在游戏的开发流程末端通常会引入压力测试。
3.目前在对游戏服务器进行压力测试时通常采用机器人压力测试,即通过压力测试工具模拟玩家在游戏中可能进行的操作,通过脚本创建大量机器人,以对游戏服务器造成压力。通常对于游戏服务器的压力测试包括游戏服务器的压力评估以及相应公共服务器和数据库服务器的压力评估,为了满足上述压力测试需求,游戏上线前的压力测试需要针对全部游戏分区,因此机器人需要满足分布式启动,相关技术中以开发支持分布式启动的机器人脚本来实现机器人分布式启动,存在脚本开发耗时长、调试成本高,进而无法快速实现压力测试,无法满足游戏快速上线需求的问题。
技术实现要素:
4.为了解决现有技术的问题,本发明实施例提供了一种游戏服务器压力测试方法、装置、电子设备及存储介质。所述技术方案如下:
5.一方面,提供了一种游戏服务器压力测试方法,所述方法包括:
6.获取第一分组列表和第二分组列表;所述第一分组列表包括第一数量的客户端ip地址组,所述第二分组列表包括所述第一数量的接入服务器ip地址组,所述第一数量为游戏分区数;
7.在所述第一分组列表中包括当前客户端ip地址时,确定所述当前客户端ip地址在所述第一分组列表中对应的分组标识,以及确定所述第二分组列表中对应所述分组标识的目标接入服务器ip地址组;
8.根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的机器人账号;
9.根据每个进程对应的机器人账号和所述目标接入服务器ip地址组中的接入服务器ip地址,对压力测试配置文件中的进程信息进行修改;
10.根据修改后的所述压力测试配置文件进行游戏服务器的压力测试。
11.另一方面,提供了一种游戏服务器压力测试装置,所述装置包括:
12.列表获取模块,用于获取第一分组列表和第二分组列表;所述第一分组列表包括第一数量的客户端ip地址组,所述第二分组列表包括所述第一数量的接入服务器ip地址组,所述第一数量为游戏分区数;
13.接入地址确定模块,用于在所述第一分组列表中包括当前客户端ip地址时,确定所述当前客户端ip地址在所述第一分组列表中对应的分组标识,以及确定所述第二分组列表中对应所述分组标识的目标接入服务器ip地址组;
14.机器人账号确定模块,用于根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的机器人账号;
15.进程配置修改模块,用于根据每个进程对应的机器人账号和所述目标接入服务器ip地址组中的接入服务器ip地址,对压力测试配置文件中的进程信息进行修改;
16.压力测试模块,用于根据修改后的所述压力测试配置文件进行游戏服务器的压力测试。
17.在一个示例性的实施方式中,所述列表获取模块包括:
18.初始参数获取模块,用于获取多个客户端ip地址、多个接入服务器ip地址以及游戏分区数;
19.序列化模块,用于分别对所述多个客户端ip地址和所述多个接入服务器ip地址进行序列化,得到客户端ip地址序列和接入服务器ip地址序列;
20.分组模块,用于根据所述游戏分区数对所述客户端ip地址序列中的客户端ip地址进行分组,以及对所述接入服务器ip地址序列中的接入服务器ip地址进行分组,得到所述第一分组列表和第二分组列表。
21.在一个示例性的实施方式中,所述机器人账号确定模块包括:
22.序列位置确定模块,用于确定所述当前客户端ip地址在所述客户端ip地址序列中的序列位置;
23.通用账号确定模块,用于根据所述序列位置确定通用机器人账号;
24.步长确定模块,用于根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的步长;
25.机器人账号确定子模块,用于将每个进程对应的步长与所述通用机器人账号的和作为每个进程对应的机器人账号。
26.在一个示例性的实施方式中,所述步长确定模块包括:
27.步长系数确定模块,用于获取当前循环的次数,在所述当前循环的次数不超过所述预设进程总数时,根据所述次数与一的差值得到步长系数;
28.步长确定子模块,用于根据单进程最大承载机器人数与所述步长系数的乘积,得到所述当前循环对应进程的步长;
29.循环次数更新模块,用于更新所述当前循环的次数。
30.在一个示例性的实施方式中,所述序列化模块包括:
31.第一字符串表示模块,用于将所述多个客户端ip地址中各客户端ip地址表示为字符串,相邻两个所述客户端ip地址用指定字符分隔,得到第一字符串;
32.第二字符串表示模块,用于将所述多个接入服务器ip地址中各接入服务器ip地址表示为字符串,相邻两个所述接入服务器ip地址用所述指定字符分隔,得到第二字符串;
33.字符串分割模块,用于以所述指定字符为分割标识,基于字符串分割函数分别对所述第一字符串和第二字符串进行分割,得到第一字符串列表和第二字符串列表;所述第一字符串列表表征客户端ip地址序列,所述第二字符串列表表征接入服务器ip地址序列。
34.在一个示例性的实施方式中,所述分组模块包括:
35.迭代器对象创建模块,用于根据所述第一字符串列表和所述第二字符串列表,分别创建总长度为所述游戏分区数的迭代器对象,得到第一迭代器对象和第二迭代器对象;
36.分组列表生成模块,用于依次取出所述第一迭代器对象中的元组,并将取出的元组转换为列表形式,得到第一分组列表;以及依次取出所述第二迭代器对象中的元组,并将取出的元组转换为列表形式,得到第二分组列表。
37.另一方面,提供了一种电子设备,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现上述游戏服务器压力测试方法。
38.另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述的游戏服务器压力测试方法。
39.另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的游戏服务器压力测试方法。
40.本发明实施例通过在当前客户端ip地址命中的情况下,基于客户端ip地址对应的分组列表确定当前客户端ip地址对应的分组标识,并从接入服务器ip地址对应的分组列表中确定该分组标识对应的目标接入服务器ip地址组,以及根据预设进程总数和单进程最大承载机器人数确定每个进程对应的机器人账号,进而根据每个进程对应的机器人账号和目标接入服务器ip地址组中的接入服务器ip地址对压力测试配置文件中的进程信息进行修改,并基于该修改后的压力测试配置文件进行游戏服务器的压力测试,从而在压力测试阶段无需开发分布式启动机器人脚本,只需根据不同游戏给定不同的参数(游戏分区数、预设进程总数、单进程最大承载机器人数、客户端ip地址和接入服务器ip地址),即可达到分布式启动机器人的效果,大大减少了开发分布式机器人脚本的耗时、降低了调试成本,快速实现压力测试,满足了游戏快速上线需求。
附图说明
41.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1是游戏上线前于正式环境中进行压力测试的压力需求示意图;
43.图2是本发明实施例提供的一种游戏服务器压力测试方法的流程示意图;
44.图3是本发明实施例提供的另一种游戏服务器压力测试方法的流程示意图;
45.图4是本发明实施例提供的一种游戏服务器压力测试装置的结构框图;
46.图5是本发明实施例提供的一种电子设备的结构框图。
具体实施方式
47.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
48.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
49.请参阅图1,其所示为游戏上线前于正式环境中进行压力测试的压力需求示意图。如图1所示,游戏正式上线前,部署的正式环境包括所有大区的小区游戏服务器、公共服务器和数据库服务器,为了实现对游戏服务器的压力评估以及相应公共服务器和数据库服务器的压力评估,在对游戏服务器进行压力测试时,施压客户端(即压力源)需要按预期连接到对应的游戏分区,并启动预设数量的机器人,其中,施压客户端为对游戏服务器产生压力的客户端,其上部署了用于模拟玩家执行游戏动作的机器人。也就是说,在游戏正式上线前的压力测试中机器人需要满足分布式启动,以通过对全部游戏分区的压力测试实现对公共服务器和数据库服务器的压力评估。
50.相关技术中,以开发支持分布式启动的机器人脚本来实现机器人分布式启动,显然这种实现机器人分布式启动的方式需要耗费很长时间进行机器人脚本的开发,而且开发后的机器人脚本还需要进一步调试,调试成本高,进而无法快速实现压力测试,无法满足游戏快速上线的需求。
51.基于此,本发明实施例提供了一种游戏服务器压力测试方法,该方法无需开发分布式启动机器人脚本,只需根据不同游戏给定不同的参数(游戏分区数、预设进程总数、单进程最大承载机器人数、客户端ip地址和接入服务器ip地址),即可达到分布式启动机器人的效果,大大减少了开发分布式机器人脚本的耗时、降低了调试成本,快速实现压力测试,满足了游戏快速上线需求。
52.需要说明的是,本发实施例中的客户端可以包括手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等类型的实体设备,也可以包括运行于实体设备中的软体,例如服务商提供给用户的网页页面,也可以为该些服务商提供给用户的应用等。
53.另外,本发实施例中的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。
54.下面结合图2对本发明实施例的技术方案进行详细阐述以快速达到分布式启动大量机器人的效果,满足图1所示压力源的需求。
55.请参阅图2,其所示为本发明实施例提供的一种游戏服务器压力测试方法的流程
示意图,该方法可以应用于电子设备,该电子设备可以是客户端设备也可以是客户端设备和服务器。
56.需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
57.s201,获取第一分组列表和第二分组列表。
58.其中,所述第一分组列表包括第一数量的客户端ip地址组,所述第二分组列表包括所述第一数量的接入服务器ip地址组,所述第一数量为游戏分区数。
59.每个客户端ip地址组包括至少一个客户端ip地址(internet protocol address,互联网协议地址),该客户端ip地址对应的客户端为部署机器人对游戏服务器进行施压的客户端(也可称之为施压客户端),其中机器人用于模拟玩家在游戏中执行的操作。
60.游戏分区数是指游戏对应各游戏大区所包括的游戏小区的数量,以图1为例,该游戏包括两个游戏大区,每个游戏大区包括250个游戏小区(即10001区-19999区,20001区-29999区),那么游戏分区数为500(250+250),也就是说,本发明实施例中的游戏分区是指针对游戏的最小粒度分区单元,如图1中是游戏大区下的游戏小区。
61.每个游戏分区内的游戏服务器通过其对应的接入服务器与客户端进行交互。每个接入服务器ip地址组包括至少一个接入服务器ip地址,接入服务器ip地址对应的接入服务器负责相应游戏分区内游戏服务器与客户端之间的交互。
62.示例性的,每个客户端ip地址组中客户端ip地址的数量相同,假设待分组的客户端ip地址的数量为k,游戏分区数为n,则第一分组列表中每个分组包括的客户端ip地址的数量为k/n个。相应的,每个接入服务器ip地址组中接入服务器ip地址的数量相同,也是k/n个。
63.在一个示例性的实施方式中,上述步骤s201可以包括:
64.获取多个客户端ip地址、多个接入服务器ip地址以及游戏分区数;
65.分别对上述多个客户端ip地址和多个接入服务器ip地址进行序列化,得到客户端ip地址序列和接入服务器ip地址序列;
66.根据所述游戏分区数对所述客户端ip地址序列中的客户端ip地址进行分组,以及对所述接入服务器ip地址序列中的接入服务器ip地址进行分组,得到所述第一分组列表和第二分组列表。
67.具体的实施中,多个客户端ip地址、多个接入服务器ip地址以及游戏分区数可以作为初始化参数由用户根据实际游戏情况进行设定,不同游戏对应的该初始化参数不同。
68.上述实施例中,通过对多个客户端ip地址、多个接入服务器ip地址分别进行序列化,可以使得每个ip地址对应到一个序列位置,确保了后续分布式启动的准确性。
69.在一个示例性的实施方式中,为了提高序列化的速度以提高压力测试效率,在对多个客户端ip地址和多个接入服务器ip地址进行序列化时,可以包括:
70.将多个客户端ip地址中各客户端ip地址表示为字符串,相邻两个客户端ip地址用指定字符分隔,得到第一字符串;
71.将多个接入服务器ip地址中各接入服务器ip地址表示为字符串,相邻两个接入服务器ip地址用所述指定字符分隔,得到第二字符串;
72.以所述指定字符为分割标识,基于字符串分割函数分别对所述第一字符串和第二字符串进行分割,得到第一字符串列表和第二字符串列表。
73.可以理解的,第一字符串列表即表征客户端ip地址序列,第二字符串列表即表征接入服务器ip地址序列。
74.示例性的,上述的指定字符可以是逗号或者空格等,上述的字符分隔函数可以是split()函数,split()用于将一个字符串分隔成字符串组。
75.在一个示例性的实施方式中,在根据所述游戏分区数对所述客户端ip地址序列中的客户端ip地址进行分组,以及对所述接入服务器ip地址序列中的接入服务器ip地址进行分组,得到所述第一分组列表和第二分组列表时可以包括:
76.根据第一字符串列表和第二字符串列表,分别创建总长度为游戏分区数的迭代器对象,得到第一迭代器对象和第二迭代器对象;
77.依次取出第一迭代器对象中的元组,并将取出的元组转换为列表形式得到第一分组列表;以及依次取出第二迭代器对象中的元组,并将取出的元组转换为列表形式得到第二分组列表。
78.具体的实施中,创建迭代器对象可以使用iter()函数,iter()函数可以用于生成迭代器对象,其中迭代器对象包含可在迭代对象上迭代的可数数量的值。取出迭代器对象中的元组并转换为列表形式时可以使用zip()函数并配合for循环实现,zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
79.举例而言,假设有10个客户端ip地址,游戏有5个分区,测试压力要平均分配到这5个分区,那么需要把第一字符串列表分成5组,每组里有2个客户端ip地址来达到压力平均的效果。以第一字符串列表表示为list_c=['11.21.2.1','11.21.2.2','11.21.2.3','11.21.2.4','11.21.2.5','11.21.2.6','11.21.2.7','11.21.2.8','11.21.2.9','11.21.2.10']为例,可以使用python提供的iter()方法将上述list_c列表生成一个迭代器对象,迭代器对象的元素为元组,总长度为5;然后,使用zip()方法配合for循环把迭代器对象里的元组依次取出来,重新生成一个列表,最终得到长度为5的一个新列表如下的gc,新列表里元素也是列表且长度为2,gc=[['11.21.2.1','11.21.2.2'],['11.21.2.3','11.21.2.4'],['11.21.2.5','11.21.2.6'],['11.21.2.7','11.21.2.8'],['11.21.2.9','11.21.2.10']]。
[0080]
上述实施例,通过基于迭代器对象进行分组,提高了分组速度和分组准确性,进而有利于确保压力测试时分布式启动机器人的准确性。
[0081]
s203,在所述第一分组列表中包括当前客户端ip地址时,确定所述当前客户端ip地址在所述第一分组列表中对应的分组标识,以及确定所述第二分组列表中对应所述分组标识的目标接入服务器ip地址组。
[0082]
其中,当前客户端ip地址即为当前客户端对应的ip地址,可以遍历第一分组列表中的各客户端ip地址,若遍历到当前客户端ip地址,则表明第一分组列表中包括当前客户端ip地址,此时记录当前客户端ip地址在第一分组列表中对应的分组标识,该分组标识可
以是分组序号,例如分组序号x。
[0083]
在得到分组序号x后,从第二分组列表中找到该分组序号x对应的目标分组,将该目标分组中的接入服务器ip地址作为当前客户端ip地址建立连接的接入层地址,从而可以将当前客户端的测试压力分配到该目标分组中接入服务器负责的游戏分区。
[0084]
s205,根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的机器人账号。
[0085]
其中,预设进程总数和单进程最大承载机器人数可以通过初始化参数进行设定,该设定可以根据游戏的实际情况,不同游戏可以设定不同的参数。预设进程总数是指单个施压客户端需要开启的进程总数。
[0086]
在一个示例性的实施方式中,上述步骤s205在实施时可以包括:
[0087]
确定所述当前客户端ip地址在所述客户端ip地址序列中的序列位置;
[0088]
根据所述序列位置确定通用机器人账号;
[0089]
根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的步长;
[0090]
将每个进程对应的步长与所述通用机器人账号的和作为每个进程对应的机器人账号。
[0091]
其中,当前客户端ip地址对应的通用机器人账号是用于确定每个进程对应的机器人账号的基础,当前客户端上的各进程在该通用机器人账号的基础上加上对应的步长即可得到各进程对应的机器人账号。需要说明的是,当前客户上各进程对应的步长不同,从而使得当前客户端上各进程对应的机器人账号不同,避免了压力测试时由于不同机器人对应同一机器人账号导致的测试错误。
[0092]
实际应用中,为了满足后台对机器人账号起始的不同要求,在上述确定当前客户端对应的通用机器人账号时可以基于序列位置和预设起始机器人账号来确定相应的通用机器人账号。例如,假设当前客户端ip地址在客户端ip地址序列中的序列位置表示为index,后台要求的机器人账号起始为10000,那么可以确定当前客户端的通用机器人账号start_uin_com=int(index)*10000+10000。若以sep表示步长,则当前客户端上各进程对应的机器人账号为uin=start_uin_com+step。
[0093]
在一个示例性的实施方式中,为了快速确定各进程对应的机器人账号以快速实现压力测试,可以基于预设进程总数进行循环,每循环一次基于单进程最大承载机器人数和当前循环次数确定一个进程对应的机器人账号,当循环的次数达到预设进程总数时,就可以确定将要开启的各进程对应的机器人账号且各进程对应的机器人账号不会出现重复。具体的,在根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的步长时可以包括:
[0094]
获取当前循环的次数,在所述当前循环的次数不超过所述预设进程总数时,根据所述次数与一的差值得到步长系数;
[0095]
根据单进程最大承载机器人数与所述步长系数的乘积,得到所述当前循环对应进程的步长;
[0096]
更新所述当前循环的次数。
[0097]
具体的实施中,以i表示当前循环的次数,总共循环预设进程总数次,则步长系数为(i-1),那么当前循环对应进程的步长可以表示为step=(maxnum+y)*(i-1),其中,
maxnum为单进程最大承载机器人数,y为预设值,用于防止机器人账号的重复,例如该y可以为100。
[0098]
s207,根据每个进程对应的机器人账号和所述目标接入服务器ip地址组中的接入服务器ip地址,对压力测试配置文件中的进程信息进行修改。
[0099]
s209,根据修改后的所述压力测试配置文件进行游戏服务器的压力测试。
[0100]
可以理解的,通过前述步骤s201至步骤s207可以对多个客户端ip地址中各客户端ip地址对应客户端上压力测试配置文件的进程信息进行相应修改,进而在步骤s209中可以根据各修改后的压力测试配置文件在相应的客户端上分布式启动机器人以对游戏服务器进行压力测试。在压力测试过程中,客户端以修改后的压力测试配置文件中的进程信息启动进程并基于各进程的机器人账号进行机器人配置,然后与相应接入服务器ip地址的接入服务器进行交互。
[0101]
在一个示例性的实施方式,可以通过一个控制服务器与各施压客户端进行连接通信,用户可以基于与控制服务器连接的终端输入初始化参数,该初始化参数包括用于当前游戏压力测试的多个客户端ip地址、多个接入服务器ip地址、游戏分区数、每个施压客户端上开启的预设进程总数、单进程最大承载机器人数,控制服务器在获取到初始化参数后,可以基于该初始化参数向各施压客户端发起压力测试指令,该压力测试指令中携带了初始化参数,从而由各施压客户端基于本发明实施例的前述图2所示方法进行相应压力测试配置文件中进程信息的修改,并基于修改后的压力测试配置文件对游戏服务器进行压力测试。
[0102]
在另一个示例性的实施方式中,为了快速实现压力测试,控制服务器在获取到初始化参数后,可以先对初始化参数中的多个客户端ip地址和多个接入服务器ip地址进行处理以得到第一分组列表和第二分组列表,然后基于第一分组列表、第二分组列表和初始化参数生成初始化信息,进而基于该初始化信息向各施压客户端下发压力测试指令。
[0103]
由本发明实施例的上述技术方案可见,本发明实施例只需根据不同游戏给定不同的参数(游戏分区数、预设进程总数、单进程最大承载机器人数、客户端ip地址和接入服务器ip地址),即可达到分布式启动机器人的效果,大大减少了开发分布式机器人脚本的耗时、降低了调试成本,快速实现压力测试,满足了游戏快速上线需求。
[0104]
为了更好的理解本发明实施例的技术方案,下面结合图3以一个具体的示例进行说明。
[0105]
如图3所示为本发明实施例提供的另一种游戏服务器压力测试方法的流程示意图,其中,初始化参数包括:k个施压客户端ip地址,游戏的接入服务器ip地址,施压客户端的预设进程总数m,单进程最大承载机器人数maxnum,游戏分区数n。
[0106]
首先,对施压客户端ip地址和接入服务器ip地址分别进行序列化得到对应的列表list_c和list_s;然后,将list_c中的元素分成n组得到第一分组列表gc,并将list_s中的元素分成n组得到第二分组列表gs;在当前客户端ip地址包含于第一分组列表中时,记录其在第一分组列表中的分组序号x,并获取相应分组序号x对应分组中的接入服务器ip地址gs[x];进一步的,基于当前客户端ip地址在list_c中的序列位置计算通用机器人账号start_uin_com=int(index)*10000+10000,其中,index表示上述的序列位置;进一步的,根据预设进程总数进行循环m次,每次循环的次数用i表示,并计算当前循环对应进程的步长step=(maxnum+100)*(i-1),最终当前循环对应进程的机器人账号uin=start_uin_com+step;
进一步的,修改压力测试配置文件中进程信息对应的uin和接入服务器ip为gs[x],并基于修改后的压力测试配置文件对游戏服务器进行压力测试。
[0107]
与上述几种实施例提供的游戏服务器压力测试方法相对应,本发明实施例还提供一种游戏服务器压力测试装置,由于本发明实施例提供的游戏服务器压力测试装置与上述几种实施例提供的游戏服务器压力测试方法相对应,因此前述游戏服务器压力测试方法的实施方式也适用于本实施例提供的游戏服务器压力测试装置,在本实施例中不再详细描述。
[0108]
请参阅图4,其所示为本发明实施例提供的一种游戏服务器压力测试装置的结构示意图,该游戏服务器压力测试装置400具有实现上述方法实施例中游戏服务器压力测试方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图4所示,该游戏服务器压力测试装置400可以包括:
[0109]
列表获取模块410,用于获取第一分组列表和第二分组列表;所述第一分组列表包括第一数量的客户端ip地址组,所述第二分组列表包括所述第一数量的接入服务器ip地址组,所述第一数量为游戏分区数;
[0110]
接入地址确定模块420,用于在所述第一分组列表中包括当前客户端ip地址时,确定所述当前客户端ip地址在所述第一分组列表中对应的分组标识,以及确定所述第二分组列表中对应所述分组标识的目标接入服务器ip地址组;
[0111]
机器人账号确定模块430,用于根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的机器人账号;
[0112]
进程配置修改模块440,用于根据每个进程对应的机器人账号和所述目标接入服务器ip地址组中的接入服务器ip地址,对压力测试配置文件中的进程信息进行修改;
[0113]
压力测试模块450,用于根据修改后的所述压力测试配置文件进行游戏服务器的压力测试。
[0114]
在一个示例性的实施方式中,所述列表获取模块410包括:
[0115]
初始参数获取模块,用于获取多个客户端ip地址、多个接入服务器ip地址以及游戏分区数;
[0116]
序列化模块,用于分别对所述多个客户端ip地址和所述多个接入服务器ip地址进行序列化,得到客户端ip地址序列和接入服务器ip地址序列;
[0117]
分组模块,用于根据所述游戏分区数对所述客户端ip地址序列中的客户端ip地址进行分组,以及对所述接入服务器ip地址序列中的接入服务器ip地址进行分组,得到所述第一分组列表和第二分组列表。
[0118]
在一个示例性的实施方式中,所述机器人账号确定模块430包括:
[0119]
序列位置确定模块,用于确定所述当前客户端ip地址在所述客户端ip地址序列中的序列位置;
[0120]
通用账号确定模块,用于根据所述序列位置确定通用机器人账号;
[0121]
步长确定模块,用于根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的步长;
[0122]
机器人账号确定子模块,用于将每个进程对应的步长与所述通用机器人账号的和作为每个进程对应的机器人账号。
[0123]
在一个示例性的实施方式中,所述步长确定模块包括:
[0124]
步长系数确定模块,用于获取当前循环的次数,在所述当前循环的次数不超过所述预设进程总数时,根据所述次数与一的差值得到步长系数;
[0125]
步长确定子模块,用于根据单进程最大承载机器人数与所述步长系数的乘积,得到所述当前循环对应进程的步长;
[0126]
循环次数更新模块,用于更新所述当前循环的次数。
[0127]
在一个示例性的实施方式中,所述序列化模块包括:
[0128]
第一字符串表示模块,用于将所述多个客户端ip地址中各客户端ip地址表示为字符串,相邻两个所述客户端ip地址用指定字符分隔,得到第一字符串;
[0129]
第二字符串表示模块,用于将所述多个接入服务器ip地址中各接入服务器ip地址表示为字符串,相邻两个所述接入服务器ip地址用所述指定字符分隔,得到第二字符串;
[0130]
字符串分割模块,用于以所述指定字符为分割标识,基于字符串分割函数分别对所述第一字符串和第二字符串进行分割,得到第一字符串列表和第二字符串列表;所述第一字符串列表表征客户端ip地址序列,所述第二字符串列表表征接入服务器ip地址序列。
[0131]
在一个示例性的实施方式中,所述分组模块包括:
[0132]
迭代器对象创建模块,用于根据所述第一字符串列表和所述第二字符串列表,分别创建总长度为所述游戏分区数的迭代器对象,得到第一迭代器对象和第二迭代器对象;
[0133]
分组列表生成模块,用于依次取出所述第一迭代器对象中的元组,并将取出的元组转换为列表形式,得到第一分组列表;以及依次取出所述第二迭代器对象中的元组,并将取出的元组转换为列表形式,得到第二分组列表。
[0134]
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0135]
本发明实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的游戏服务器压力测试方法。
[0136]
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
[0137]
图5是本发明实施例提供的运行一种游戏服务器压力测试方法的电子设备的硬件结构框图,如图5所示,该电子设备的内部结构可包括但不限于:处理器、网络接口及存储器。其中,电子设备内的处理器、网络接口及存储器可通过总线或其他方式连接,在本说明书实施例所示图5中以通过总线连接为例。
[0138]
其中,处理器(或称cpu(central processing unit,中央处理器))是电子设备的
计算核心以及控制核心。网络接口可选的可以包括标准的有线接口、无线接口(如wi-fi、移动通信接口等)。存储器(memory)是电子设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器可以是高速ram存储设备,也可以是非不稳定的存储设备(non-volatile memory),例如至少一个磁盘存储设备;可选的还可以是至少一个位于远离前述处理器的存储装置。存储器提供存储空间,该存储空间存储了电子设备的操作系统,可包括但不限于:windows系统(一种操作系统),linux(一种操作系统),android(安卓,一种移动操作系统)系统、ios(一种移动操作系统)系统等等,本发明对此并不作限定;并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。在本说明书实施例中,处理器加载并执行存储器中存放的一条或一条以上指令,以实现上述方法实施例提供的游戏服务器压力测试方法。
[0139]
本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于电子设备之中以保存用于实现一种游戏服务器压力测试方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的游戏服务器压力测试方法。
[0140]
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0141]
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0142]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0143]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0144]
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种游戏服务器压力测试方法,其特征在于,所述方法包括:获取第一分组列表和第二分组列表;所述第一分组列表包括第一数量的客户端ip地址组,所述第二分组列表包括所述第一数量的接入服务器ip地址组,所述第一数量为游戏分区数;在所述第一分组列表中包括当前客户端ip地址时,确定所述当前客户端ip地址在所述第一分组列表中对应的分组标识,以及确定所述第二分组列表中对应所述分组标识的目标接入服务器ip地址组;根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的机器人账号;根据每个进程对应的机器人账号和所述目标接入服务器ip地址组中的接入服务器ip地址,对压力测试配置文件中的进程信息进行修改;根据修改后的所述压力测试配置文件进行游戏服务器的压力测试。2.根据权利要求1所述的游戏服务器压力测试方法,其特征在于,所述获取第一分组列表和第二分组列表包括:获取多个客户端ip地址、多个接入服务器ip地址以及游戏分区数;分别对所述多个客户端ip地址和所述多个接入服务器ip地址进行序列化,得到客户端ip地址序列和接入服务器ip地址序列;根据所述游戏分区数对所述客户端ip地址序列中的客户端ip地址进行分组,以及对所述接入服务器ip地址序列中的接入服务器ip地址进行分组,得到所述第一分组列表和第二分组列表。3.根据权利要求2所述的游戏服务器压力测试方法,其特征在于,所述根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的机器人账号包括:确定所述当前客户端ip地址在所述客户端ip地址序列中的序列位置;根据所述序列位置确定通用机器人账号;根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的步长;将每个进程对应的步长与所述通用机器人账号的和作为每个进程对应的机器人账号。4.根据权利要求3所述的游戏服务器压力测试方法,其特征在于,所述根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的步长包括:获取当前循环的次数,在所述当前循环的次数不超过所述预设进程总数时,根据所述次数与一的差值得到步长系数;根据单进程最大承载机器人数与所述步长系数的乘积,得到所述当前循环对应进程的步长;更新所述当前循环的次数。5.根据权利要求2所述的游戏服务器压力测试方法,其特征在于,所述分别对所述多个客户端ip地址和所述多个接入服务器ip地址进行序列化,得到客户端ip地址序列和接入服务器ip地址序列,包括:将所述多个客户端ip地址中各客户端ip地址表示为字符串,相邻两个所述客户端ip地址用指定字符分隔,得到第一字符串;将所述多个接入服务器ip地址中各接入服务器ip地址表示为字符串,相邻两个所述接入服务器ip地址用所述指定字符分隔,得到第二字符串;
以所述指定字符为分割标识,基于字符串分割函数分别对所述第一字符串和第二字符串进行分割,得到第一字符串列表和第二字符串列表;所述第一字符串列表表征客户端ip地址序列,所述第二字符串列表表征接入服务器ip地址序列。6.根据权利要求5所述的游戏服务器压力测试方法,其特征在于,所述根据所述游戏分区数对所述客户端ip地址序列中的客户端ip地址进行分组,以及对所述接入服务器ip地址序列中的接入服务器ip地址进行分组,得到所述第一分组列表和第二分组列表包括:根据所述第一字符串列表和所述第二字符串列表,分别创建总长度为所述游戏分区数的迭代器对象,得到第一迭代器对象和第二迭代器对象;依次取出所述第一迭代器对象中的元组,并将取出的元组转换为列表形式,得到第一分组列表;以及依次取出所述第二迭代器对象中的元组,并将取出的元组转换为列表形式,得到第二分组列表。7.一种游戏服务器压力测试装置,其特征在于,所述装置包括:列表获取模块,用于获取第一分组列表和第二分组列表;所述第一分组列表包括第一数量的客户端ip地址组,所述第二分组列表包括所述第一数量的接入服务器ip地址组,所述第一数量为游戏分区数;接入地址确定模块,用于在所述第一分组列表中包括当前客户端ip地址时,确定所述当前客户端ip地址在所述第一分组列表中对应的分组标识,以及确定所述第二分组列表中对应所述分组标识的目标接入服务器ip地址组;机器人账号确定模块,用于根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的机器人账号;进程配置修改模块,用于根据每个进程对应的机器人账号和所述目标接入服务器ip地址组中的接入服务器ip地址,对压力测试配置文件中的进程信息进行修改;压力测试模块,用于根据修改后的所述压力测试配置文件进行游戏服务器的压力测试。8.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1~6中任一项所述的游戏服务器压力测试方法。9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1~6任一项所述的游戏服务器压力测试方法。10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~6中任一项所述的游戏服务器压力测试方法。
技术总结
本发明公开了游戏服务器压力测试方法、装置、电子设备及存储介质,该方法包括:获取第一分组列表和第二分组列表;在第一分组列表中包括当前客户端IP地址时,确定当前客户端IP地址在第一分组列表中对应的分组标识,以及确定第二分组列表中对应所述分组标识的目标接入服务器IP地址组;根据预设进程总数和单进程最大承载机器人数,确定每个进程对应的机器人账号;根据每个进程对应的机器人账号和所述目标接入服务器IP地址组中的接入服务器IP地址,对压力测试配置文件中的进程信息进行修改;根据修改后的压力测试配置文件进行游戏服务器的压力测试。本发明减少了开发分布式机器人脚本的耗时、降低了调试成本,满足了游戏快速上线需求。需求。需求。
技术研发人员:聂东日
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.03.24
技术公布日:2023/10/6
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
