一种快速定位高频带宽消耗的方法及装置与流程

文档序号:17246748发布日期:2019-03-30 08:51阅读:128来源:国知局
一种快速定位高频带宽消耗的方法及装置与流程

本发明涉及计算机网络领域,特别涉及一种快速定位高频带宽消耗的方法及装置。



背景技术:

在当今互联网的时代,游戏的硬件设备(手机/电脑配置)等不断的提升,硬件对于绝大多数产品而已,已经不在是一个很明显的性能瓶颈点,相对而言,产品的软件(代码逻辑)的优化反而对性能的提升比较明显,因此,对于目前市场上的游戏项目,都在为自己的项目尽量的更全覆盖支持高、中、低(手机/电脑硬件配置)而努力,在游戏产品的研发、上线阶段,经常遇到客户端卡顿,服务器卡顿,登陆过程较长等问题。

对于游戏产品来说,协议是客户端与服务器处理的最小交互单位,因此抛开客户端加载本机大场景资源问题外,针对代码性能逻辑问题的优化方向,目前主流的方案是:通过修改服务端,客户端代码,在网络处理发收包的地方,添加开关,打印所有的网络协议收发日志,这样在发布到上线版本时,关闭开关,在调试问题版本时,打开开关,然后通过浏览统计日志,对问题定位;此种方法存在一定的风险,为了调试定位问题,在上线产品里添加了对于上线产品不必要的调试信息(打印网络协议方法及开关),并且还需要手动的统计、筛选和排序协议数据,无法通用化。



技术实现要素:

本发明针对现有技术存在的需要在上线产品里添加了对于上线产品不必要的调试信息(打印网络协议方法及开关)并且需要手动统计、筛选和排序协议数据,无法通用化的问题,提出了一种快速定位高频带宽消耗的方法及装置。

首先,本申请提出一种快速定位高频带宽消耗的方法,包括以下步骤:

s100)在客户端与服务端之间建立通信连接;

s200)客户端每经过第一时间后,在处理网络接收的地方以协程方式向服务端发起包含请求数据参数组的数据请求,所述请求数据参数组至少包括数据标识,协议标识以及属于该协议标识的协议数据包的大小值;

s300)在存储器中建立协议标识及其协议数据包大小值的对应关系并保存在所述存储器;

s400)在存储器中查找当前所获取的请求数据参数组中的数据标识,若能查找到,则继续执行以下步骤,若不能查找到,则新建所述数据标识的数据记录并保存到存储器;

s500)在存储器中查找当前所获取的请求数据参数组中的协议标识,若能查找到,则将所获取的属于该协议标识的协议数据包的大小值累加到当前属于该协议标识的协议数据包大小值,若不能查找到,则新建所述协议标识的数据记录并保存到存储器,将所获取的属于该协议标识的协议数据包的大小值作为当前属于该协议标识的协议数据包大小值的初始值并保存到存储器;

s600)展示协议标识和当前属于该协议标识的协议数据包大小值的对应关系。

进一步地,在本申请的上述方法中,步骤s100还包括以下子步骤:

s101)向服务端申请发送第一数据标识;

s102)服务端收到发自客户端的第一数据标识后,向客户端发送第二数据标识。

再进一步地,在本申请的上述方法中,步骤s300还包括以下后置步骤:

当服务端在第二时间内没有收到客户端数据请求,则服务端在存储器内删除对应关系。

再进一步地,在本申请的上述方法中,所述存储器具有内建的redis数据库。

具体地,在本申请的上述方法中,所述第一时间为10秒。

具体地,在本申请的上述方法中,所述第二时间为30秒。

进一步地,本申请的上述方法中,所述通信连接通过远程调用方式建立。

再次,本申请提出一种快速定位高频带宽消耗的装置,包括以下模块:

通信模块,用于在客户端与服务端之间建立通信连接;

请求模块:用于客户端每经过第一时间后,以协程方式向服务端发起包含请求数据参数组的数据请求,所述请求数据参数组至少包括数据标识,协议标识以及属于该协议标识的协议数据包的大小值;

建立模块,用于在存储器中建立协议标识及其协议数据包大小值的对应关系并保存在所述存储器;

查找模块,用于在存储器中查找当前所获取的请求数据参数组中的数据标识,若能查找到,则继续执行以下步骤,若不能查找到,则新建所述数据标识的数据记录并保存到存储器;

统计模块,用于在存储器中查找当前所获取的请求数据参数组中的协议标识,若能查找到,则将所获取的属于该协议标识的协议数据包的大小值累加到当前属于该协议标识的协议数据包大小值,若不能查找到,则新建所述协议标识的数据记录并保存到存储器,将所获取的属于该协议标识的协议数据包的大小值作为当前属于该协议标识的协议数据包大小值的初始值并保存到存储器;

展示模块,用于展示协议标识和当前属于该协议标识的协议数据包大小值的对应关系。

最后,本申请提出一种计算机可读存储介质,其上存储有计算机指令,所述指令用于执行上述的方法。

本发明所提出的方法和装置,能够自动生成的协议数据自动筛选、统计、分类、排序,以图表及表格的展示形式,精确,快速的给予项目组提供数据服务,直接输出具体协议次数,大小总占比(实时占比,排名占比),同步间隔等数据,不需对上线产品添加不必要的调试信息。

附图说明

图1所示为本申请所提出的一种快速定位高频带宽消耗方法第一实施例的流程图;

图2所示为本申请所提出的一种快速定位高频带宽消耗方法第二实施例的流程图;

图3所示为本申请所提出的一种快速定位高频带宽消耗方法第三实施例的数据图;

图4所示为本申请所提出的一种快速定位高频带宽消耗方法第四实施例的数据图;

图5所示为本申请所提出的一种快速定位高频带宽消耗方法第五实施例的数据图;

图6所示为本申请所提出的一种快速定位高频带宽消耗方法第六实施例的数据图;

图7所示为本申请所提出的一种快速定位高频带宽消耗方法第七实施例的数据图;

图8所示为本申请所提出的一种快速定位高频带宽消耗方法的数据流向图;

图9所示为本申请所提出的一种快速定位高频带宽消耗装置的框架图。

具体实施方式

以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。附图中各处使用的相同的附图标记指示相同或相似的部分。

需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本申请中所使用的上、下、左、右等描述仅仅是相对于附图中本申请各组成部分的相互位置关系来说的。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。

应当理解,尽管在本申请中可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本申请范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”。

参照图1所示的本申请所提出的一种快速定位高频带宽消耗方法第一实施例的流程图,本实施例提出了一种快速定位高频带宽消耗方法,包括以下步骤:

s100)在客户端与服务端之间建立通信连接;

s200)客户端每经过第一时间后,在处理网络接收的地方以协程方式向服务端发起包含请求数据参数组的数据请求,所述请求数据参数组至少包括数据标识,协议标识以及属于该协议标识的协议数据包的大小值;

s300)在存储器中建立协议标识及其协议数据包大小值的对应关系并保存在所述存储器;

s400)在存储器中查找当前所获取的请求数据参数组中的数据标识,若能查找到,则继续执行以下步骤,若不能查找到,则新建所述数据标识的数据记录并保存到存储器;

s500)在存储器中查找当前所获取的请求数据参数组中的协议标识,若能查找到,则将所获取的属于该协议标识的协议数据包的大小值累加到当前属于该协议标识的协议数据包大小值,若不能查找到,则新建所述协议标识的数据记录并保存到存储器,将所获取的属于该协议标识的协议数据包的大小值作为当前属于该协议标识的协议数据包大小值的初始值并保存到存储器;

s600)展示协议标识和当前属于该协议标识的协议数据包大小值的对应关系。

具体地,客户端每经过第一时间后,向服务端发送数据请求是为了保持客户端和服务端之间的通信连接,并保持同步数据的有效性。

具体地,协程是python中实现多任务的另外的一种方式,但是与线程、进程不同的是,它比线程占用的资源更小,且自带cpu上下文,即只要在合适的时机(阻塞或者优先级更高的),可以从一个协程切换到另外一个协程。

进一步地,如图2所示为本申请所提出的一种快速定位高频带宽消耗方法第二实施例的流程图,在本申请的上述方法中,步骤s100还包括以下子步骤:

s101)向服务端申请发送第一数据标识;

s102)服务端收到发自客户端的第一数据标识后,向客户端发送第二数据标识。

具体地,在实际应用场景中,客户端可以是手机,平板终端,笔记本电脑,台式电脑等能够运行程序并且能够发送和接收数据的终端设备,服务端可以是部署了数据库的服务器等。

进一步地,所述第一数据标识是客户端向服务户端的唯一数据标识,用于区分来自不同客户端的数据,保证数据的唯一性,在实际应用场景中,如若是对手机游戏进行开发,则第一数据标识可以为手机的imei码,手机的isdn码,蓝牙硬件地址编码等等。所述第二数据标识是服务端收到客户端的第一数据标识后,生成的编码,具体uuid,第二数据标识生成后将向客户端发送,并且服务端建立关于该客户端的数据档案。

再进一步地,在本申请的上述方法中,步骤s300还包括以下后置步骤:

当服务端在第二时间内没有收到客户端数据请求,则服务端在存储器内删除对应关系。

再进一步地,在本申请的上述方法中,所述存储器具有内建的redis数据库。

具体地,在本申请的上述方法中,所述第一时间为10秒。

具体地,在本申请的上述方法中,所述第二时间为30秒。

进一步地,客户端当收到服务端返回的唯一uuid后,会以协程方式启动心跳包,每隔10秒向服务端发请请求,用于同步服务端数据有效性;当服务端连续30秒内,未收到客户端的心跳包请求,则会销毁服务端内存数据。

具体地,心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。心跳包用来判断对方(设备,进程或其它网元)是否正常运行,采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经离线。用于检测tcp的异常断开。基本原因是服务器端不能有效的判断客户端是否在线,也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况。所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。

比如有些通信软件长时间不使用,要想知道它的状态是在线还是离线就需要心跳包,定时发包收包。发包方:可以是客户也可以是服务端,看哪边实现方便合理,一般是客户端。服务器也可以定时发心跳下去。一般来说,出于效率的考虑,是由客户端主动向服务器端发包,而不是服务器向客户端发。客户端每隔一段时间发一个包,使用tcp的,用send发,使用udp的,用sendto发,服务器收到后,就知道当前客户端还处于“活着”的状态,否则,如果隔一定时间未收到这样的包,则服务器认为客户端已经断开,进行相应的客户端断开逻辑处理。

具体地,实际工作中一个完整的工作流程包括以下步骤:

第一步:装置客户端和装置服务端之间,以rpc(远程调用方式)建立通信基础;

第二步:客户端向服务端申请唯一数据标识,用于区别报告数据唯一性。

第三步:服务端收到客户端的唯一数据标识请求时,则生成uuid,并返回客户端。

第四步:客户端装置当收到服务端返回的唯一uuid后,会以协程方式启动心跳包,每隔10秒向服务端发请请求,用于同步服务端数据有效性;当服务端连续30秒内,末收到客户端的心跳包请求,则会销毁服务端内存数据。

第五步:事务请求数据参数组成由:数据唯一标识+类别+协议号+协议包体大小,当服务端收到客户端请求时,则会通过数据唯一标识获取对应报告数据块,然后按类别进行搜索定位,如果搜索到此类别记录,再以秒为单位进行协议号搜索,如果搜索到,则次数加1有对协议包体大小进行相加,否则就新增记录,初始化请求数据,次数为1,如果没有搜索到类别,则新建类别,并初始化请求数据;

第六步:客户端在处理网络接收(handle_read/handle_recv)地方,向服务端s发起事务请求,记录协议号数据;

第七步:服务端收到客户端请求并进行逻辑数据汇总,最终将汇总数据更新写入redis数据库,供第三方平台下载或数据展示用途;

根据上述技术流程,最终可产出:服务端提供的前端装置接口,供测试用例或工具使用,后端提供数据获取接口,供浏览器或pc客户端使用,从而满足实际的二种需求:1.通过游戏客户端优,2.通过测试用例优化。

以对手机上的一款游戏(x1)为例,进行定位、优化带宽协议性能举例。

第一步:在电脑上(如:ip:192.168.10.101)运行装置工具,填入游戏服务器ip及port(端口),在项目列表里选择x1项目,点击启动。

第二步:装置工具的核心实现与实例2的测试用例接入前端装置一致。

1.在处理client网络收包地方,接入前端装置event_stat,类型为netpack_send。

2.在处理server网络收包地方,接入前端装置event_stat,类型为netpack_recv。

第三步:在手机上,运行x1游戏,在服务器列表选择里,输入选择192.168.10.101服务输入选择服务器可通过以下方式:

1.x1游戏项目支持客户端输入指定游戏服务器地址。

2.x1游戏项目支持挂包外形式,载入192.168.10.101服务器地址,供用户选择。

3.在手机上,可通过vpn等工具,把手机x1游戏项目游戏服务器导向到192.168.10.101上。

对于项目组研发阶段的性能调优,通常会使用上述前2种方法。

第四步:在手机上进入游戏,并对游戏进行如移动,技能释放等系列需要测试的功能点进行操作。

即界面会实时展示:

2个概况饼图:

1.客户端发送的全部协议次数占比饼图;

2.客户端收到服务端发送的全部协议次数占比饼图;

2份top表单数据:

1.客户端向服务器发送的top10协议次数/大小表单;

2.客户端收到服务端发送的top10协议次数/大小表单;

按需显示(详细top10协议曲线图):

点击上述的top10具体单条协议,会自动生成x轴以时间为单位,y轴以次数/大小为单位的具体某条协议实时曲线图;

按需显示(全协议数据):

对于想了解top10之后的详细数据,可通过点击“更多”或者“导出”按钮获取。

参照图3所示的本申请所提出的一种快速定位高频带宽消耗方法第三实施例的数据图,图中分别示出了客户端发送的全部协议次数占比饼图,以客户端发送的协议次数为例,在客户端发送的全部协议次数占比饼图中,能够获得来自客户端发出的所有协议的数据请求的总次数及其占比,为了显示的美观,至显示了数据请求总次数最多的前11个协议的情况,在实际工作中,可以根据工作的需要和显示要求,可以任意设定显示的协议数量。客户端收到服务端发送的全部协议次数占比饼图与图3类似,其反应的是客户端收到服务端发送的全部协议次数占比。

图4所示为本申请所提出的一种快速定位高频带宽消耗方法第四实施例的数据图,图中分别示出了在时点1,时点2及时点3三个时刻中,发自客户端和发自服务端的数据请求总次数最多的前10个协议的情况,根据工作的实际需要,可以添加占比字段,统计该协议的数据请求次数占所有协议的数据请求次数的占比;点击上述的top10具体单条协议,会自动生成x轴以时间为单位,y轴以次数/大小为单位的具体某条协议实时曲线图,如图5所示的本申请所提出的一种快速定位高频带宽消耗方法第五实施例的数据图,展示了协议1在三个时点发送数据请求次数的情况;若协议的数量超过10个,如图6所示,则可以通过点击更多,来展示排名在后面的协议的情况,另外,本申请的方法及装置还提供排序功能,如图7所示,能够以升序或降序的方式进行排列。

参照图8所示的本申请所提出的一种快速定位高频带宽消耗方法的数据流向图,

第一步:装置客户端和装置服务端之间,以rpc(远程调用方式)建立通信基础;

第二步:客户端向服务端申请唯一数据标识,用于区别报告数据唯一性。

第三步:服务端收到客户端的唯一数据标识请求时,则生成uuid,并返回客户端。

第四步:客户端装置当收到服务端返回的唯一uuid后,会以协程方式启动心跳包,每隔10秒向服务端发请请求,用于同步服务端数据有效性;当服务端连续30秒内,末收到客户端的心跳包请求,则会销毁服务端内存数据。

第五步:事务请求数据参数组成由:数据唯一标识+类别+协议号+协议包体大小,当服务端收到客户端请求时,则会通过数据唯一标识获取对应报告数据块,然后按类别进行搜索定位,如果搜索到此类别记录,再以秒为单位进行协议号搜索,如果搜索到,则次数加1有对协议包体大小进行相加,否则就新增记录,初始化请求数据,次数为1,如果没有搜索到类别,则新建类别,并初始化请求数据;

第六步:客户端在处理网络接收(handle_read/handle_recv)地方,向服务端s发起事务请求,记录协议号数据;

第七步:服务端收到客户端请求并进行逻辑数据汇总,最终将汇总数据更新写入redis数据库,供第三方平台下载或数据展示用途。

参照图9所示的本申请所提出的一种快速定位高频带宽消耗装置的框架图,图中示出了:

通信模块,用于在客户端与服务端之间建立通信连接;

请求模块:用于客户端每经过第一时间后,以协程方式向服务端发起包含请求数据参数组的数据请求,所述请求数据参数组至少包括数据标识,协议标识以及属于该协议标识的协议数据包的大小值;

建立模块,用于在存储器中建立协议标识及其协议数据包大小值的对应关系并保存在所述存储器;

查找模块,用于在存储器中查找当前所获取的请求数据参数组中的数据标识,若能查找到,则继续执行以下步骤,若不能查找到,则新建所述数据标识的数据记录并保存到存储器;

统计模块,用于在存储器中查找当前所获取的请求数据参数组中的协议标识,若能查找到,则将所获取的属于该协议标识的协议数据包的大小值累加到当前属于该协议标识的协议数据包大小值,若不能查找到,则新建所述协议标识的数据记录并保存到存储器,将所获取的属于该协议标识的协议数据包的大小值作为当前属于该协议标识的协议数据包大小值的初始值并保存到存储器;

展示模块,用于展示协议标识和当前属于该协议标识的协议数据包大小值的对应关系。

最后,本发明还提供了一种计算机可读存储介质,其上存储有计算机指令。该指令被处理器执行时实现如前述任一项方法的步骤。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作-根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

进一步,该方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。

本文描述了本公开的实施例,包括发明人已知用于执行本发明的最佳模式。在阅读了上述描述后,这些所述实施例的变化对本领域的技术人员将变得明显。发明人希望技术人员视情况采用此类变型,并且发明人意图以不同于如本文具体描述的方式来实践本公开的实施例。因此,经适用的法律许可,本公开的范围包括在此所附的权利要求书中叙述的主题的所有修改和等效物。此外,本公开的范围涵盖其所有可能变型中的上述元素的任意组合,除非本文另外指示或以其他方式明显地与上下文矛盾。

尽管本发明的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本发明的预定范围。此外,上文以发明人可预见的实施例对本发明进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本发明的非实质性改动仍可代表本发明的等效改动。

因此,应以说明性意义而不是限制性意义来理解本说明书和附图。然而,将明显的是:在不脱离如权利要求书中阐述的本申请的更宽广精神和范围的情况下,可以对本申请做出各种修改和改变。

其他变型在本申请的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其某些实施例。然而,应当理解,并不意图将本申请局限于所公开的一种或多种具体形式;相反,其意图涵盖如所附权利要求书中所限定落在本申请的精神和范围内的所有修改、替代构造和等效物。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1