一种服务器性能测试方法、装置及系统的制作方法

文档序号:6436000阅读:226来源:国知局
专利名称:一种服务器性能测试方法、装置及系统的制作方法
技术领域
本申请涉及网络数据处理领域,特别涉及一种服务器性能测试优化方法及系统。
背景技术
服务器是指一个管理资源并为用户提供服务的计算机软件和硬件的集合,用于接收数据请求并对所述数据请求进行响应。服务器的种类包括多种,如应用服务器、WEB服务器等;以WEB服务器为例WEB服务器接收客户端发送的HTTP (HyperText TransferProtocol,超文本传输协议)请求,对所述HTTP请求进行响应,将与所述HTTP请求相对应的页面传送至客户端的浏览器,使用户可以浏览。为了测试服务器对客户端发送的数据请求的响应性能,一般采用性能测试工具创建多个线程,再由这多个线程模拟多个客户端不断的发送请求来访问服务器的方式,直接或间接的获得服务器的响应时间、TPS (Transaction Per Second,每秒事务处理量)值来反映服务器的响应处理能力,这里的事务与前述的请求一一对应。可以看出,TPS值的大小直接反映服务器的处理能力,其计算方式为某一持续时间段的请求数/持续时间段;通过TPS的计算方式可以看出,TPS的大小由持续时间段内向服务器发送的请求数决定,在某一持续时间段内,向服务器发送的请求数越多,TPS的值越大,也就表示服务器的性能越好。现有的性能测试方法基于固定的性能测试工具进行,如JMeter ; JMeter是Apache组织开发的基于java的测试工具,可以模拟大量的客户端向服务器发送请求来测试服务器的强度,并分析服务器的整体性能。JMeter在对服务器性能测试的过程中,其创建的每一个发送线程均可发送数据请求至服务器,但是在接收到服务器所响应的请求结果时,JMeter就不能再向服务器发送请求,需要对服务器响应的请求结果进行计算得到TPS值后,才触发每一个发送线程继续发送下一个数据请求。从上述过程中可以看出,JMeter在每接到服务器响应的一个请求结果时,都需要即时根据请求结果计算当前的TPS值,而JMeter对服务器响应的请求结果进行计算处理的过程占用了大量时间,这就使JMeter在某一持续时间段内向服务器发送的请求数减少,而服务器接收到的请求数少了,就会导致服务器处理请求的效率降低的现象,也会造成浪费JMeter与服务器之间的传输资源的问题。

发明内容
本申请所要解决的技术问题是提供一种服务器性能测试方法,用以解决现有技术中对服务器进行响应性能测试时,由于服务器接收到的请求数少,导致服务器处理请求的效率降低的问题,更进一步的,节约了 JMeter与服务器之间的传输资源。本申请还提供了一种服务器性能测试装置,用以保证上述方法在实际中的实现及应用。为了解决上述问题,本申请公开了一种服务器性能测试方法,包括创建至少一个发送线程,以及与所述发送线程独立的计算线程;
触发所述发送线程发送当前数据请求至所述服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,再发送下一个数据请求;触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。上述的方法,优选的,还包括将所述服务器的响应性能结果存入一预设的映射map队列中。上述的方法,优选的,所述将请求结果存入预设的具有固定长度的数据队列包括解析与所述请求结果相对应的数据请求,获得所述数据请求中的请求标识;将所述请求标识作为所述请求结果的识别标识,存储所述请求结果至所述预设的具有固定长度的数据队列中。上述的方法,优选的,在触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果之前,还包括判断所述map队列中是否存在与所述请求结果具有相同识别标识的已存性能结果;如果是,则所述触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果,具体为触发所述计算线程从所述map队列中获取与所述请求结果具有相同识别标识的已存性能结果,并依据所述已存性能结果及所述请求结果计算所述服务器的响应性能结果。上述的方法,优选的,还包括以计算得到的新的响应性能结果对所述map队列中与所述请求结果具有相同识别标识的已存性能结果进行更新。上述的方法,优选的,还包括创建一个数据保存线程,并触发所述数据保存线程将所述map队列中的所述响应性能结果按固定时间周期保存至性能结果保存服务器中。上述的方法,优选的,具体触发所述数据保存线程将所述响应性能结果按固定时间周期且以二进制或十进制格式保存至性能结果保存服务器中。上述的方法,优选的,触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果后,还包括清空所述数据队列中存储的请求结果。本申请公开了一种服务器性能测试装置,包括线程创建模块、第一触发模块和第二触发模块;其中所述线程创建模块用于创建至少一个发送线程,以及与所述发送线程独立的计算线程;所述第一触发模块用于触发所述发送线程发送当前数据请求至所述服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,再发送下一个数据请求;
所述第二触发模块用于触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。上述的装置,优选的,还包括队列预设模块;所述队列预设模块用于预设存储所述服务器返回的请求结果的具有固定长度的数据队列及预设存储所述计算线程计算的服务器响应性能结果的映射map队列。上述的装置,优选的,所述第一触发模块中设置有解析子模块;所述解析子模块用于解析与所述请求结果相对应的数据请求,获得所述数据请求中的请求标识。上述的装置,优选的,还包括判断模块;所述判断模块用于在所述第二触发模块触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果之前判断所述map队列中是否存在与所述请求结果具有相同识别标识的已存性能结果;如果是,则所述第二触发模块触发所述计算线程从所述map队列中获取与所述请求结果具有相同识别标识的已存性能结果,并依据所述已存性能结果及所述请求结果计算所述服务器的响应性能结果。上述的装置,优选的,还包括更新模块;所述更新模块用于以计算得到的新的响应性能结果对所述map队列中与所述请求结果具有相同识别标识的已存性能结果进行更新。上述的装置,优选的,所述线程创建模块还用于创建一个数据保存线程,并触发所述数据保存线程将所述map队列中的所述响应性能结果按固定时间周期保存至性能结果保存服务器中。本申请还提供了一种JMeter系统所述JMeter系统的控制器上设置有一种服务器性能测试装置。与现有技术相比,本申请包括以下优点在本申请中,对服务器进行性能测试时,创建至少一个发送线程,以及与所述发送线程独立的计算线程;触发所述发送线程发送当前数据请求至所述服务器,并在接收到服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,即可继续发送下一数据请求;然后触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。整个性能测试过程中,相对于现有技术中需要对服务器响应的请求结果进行计算得到TPS值后,才触发每一个发送线程继续发送下一数据请求;其计算过程由独立的计算线程完成,节约了由于对服务器响应请求结果进行计算处理而占用的大量时间,使在某一持续时间段内向服务器发送的请求数增多、服务器接收的请求数增多,从而提高了服务器处理请求的效率;节约了性能测试过程中与服务器之间的传输资源。优选的,本申请中,将接收到的服务器返回的请求结果存储在预设的具有固定长度的数据队列中;以及将计算线程计算的服务器响应性能结果存储在预设的映射map队列中;创建并触发数据保存线程将所述map队列中的响应性能结果按固定时间周期保存至性能结果保存服务器中;节约了性能测试过程中所占用的存储空间以及磁盘10、CPU的使用率。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。


为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请的一种服务器性能测试方法实施例1的流程图;图2是本申请的一种服务器性能测试方法实施例1中的一具体流程图;图3是本申请的一种服务器性能测试方法实施例2中的一具体流程图;图4是本申请的一种服务器性能测试方法实施例3的流程图;图5是本申请的一种服务器性能测试方法实施例4的流程图;图6是本申请的一种服务器性能测试方法实施例5的流程图;图7是本申请的一种服务器性能测试装置实施例1的结构框图;图8是本申请的一种服务器性能测试装置实施例2的结构框图;图9是本申请的一种服务器性能测试装置实施例3的结构框图;图10是本申请的一种服务器性能测试装置实施例4的结构框图;图11是本申请的一种JMeter系统的结构框图。
具体实施例方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请可用于众多通用或专用的计算装置环境或配置中。例如个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本申请的主要思想之一可以包括,在应用性能测试工具对服务器进行性能测试的过程中,首先,创建至少一发送线程,以及与所述发送线程独立的计算线程;测试开始时,触发所述发送线程发送当前数据请求至服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,然后发送下一数据请求;依据所述数据队列中的请求结果对所述服务器的响应性能结果进行计算的过程由所述计算线程执行;从而使发送线程不需要等待对服务器返回的请求结果进行计算处理,即可发送新的数据请求至服务器;节约了对服务器响应的请求结果进行计算处理的过程占用的大量时间,因此在某一持续时间段内向服务器发送的请求数增多,进而使服务器接收到的请求数增多,提升了服务器处理请求的效率,节约了性能测试过程中测试端与服务器之间的传输资源。参考图1,示出了本申请一种服务器性能测试方法实施例1的流程图,可以包括以下步骤步骤101 :创建至少一个发送线程,以及与所述发送线程独立的计算线程;本申请方法实施例的执行主体可以为性能测试工具,则本步骤就可以由性能测试工具的控制器来创建至少一个发送线程,所述发送线程用于模拟客户端不断的发送数据请求访问服务器;本步骤中创建的与所述发送线程相独立的计算线程,用于依据接收到的服务器返回的请求结果计算服务器的响应性能结果;因为此处创建的计算线程与发送线程是独立的,因此本实施例中的发送线程后续就无需再与现有技术一样计算服务器的响应性能结果;步骤102 :触发所述发送线程发送当前数据请求至所述服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,再发送下一个数据请求;对服务器的性能测试开始时,触发所述发送线程发送当前数据请求至所述服务器,以模拟http请求为例,访问某一购物网站,具体请求为 http: //china, gouwu. com/,发送线程发送数据请求http://china, gouwu. com/至所述购物网站的服务器,购物网站的服务器返回响应给所述发送线程,所述响应中包含有所述发送线程所需的请求结果(即服务器的响应性能数据,一般为SampleResult类型数据);所述发送线程将接收到所述购物网站服务器返回的请求结果保存至预设的具有固定长度的数据队列中;保存完成后,所述发送线程即可发送下一数据请求;本申请中,发送线程发送至服务器的每一个数据请求,在接收到服务器返回的请求结果时,将所述请求结果与所述数据请求相对应的保存至所述预设的具有固定长度的数据队列中,具体的存储过程,如本申请提供的图2所示,包括步骤S201 :解析与所述请求结果相对应的数据请求,获得所述数据请求中的请求标识;本申请实施例中,发送线程在发送数据请求时,为所述数据请求配置一特有的请求标识,发送线程在接收到服务器返回的请求结果时,首先确定与所述请求结果相对应的数据请求,对所述数据请求进行解析,获得所述数据请求中的请求标识;步骤S202 :将所述请求标识作为所述请求结果的识别标识,存储所述请求结果至所述预设的具有固定长度的数据队列中;将解析得到的与所述请求结果相对应的数据请求的请求标识,作为所述请求结果的识别标识,存储所述请求结果至所述预设的具有固定长度的数据队列中,从而使存储至所述数据队列中的每一个请求结果能够与发送线程发送的数据请求一一对应;本申请实施例中,预设的固定长度的数据队列具体格式可为BlockingQueue〈SampleResult>resultBlockingQ = newArrayBlockingQueue<SampleResult〉(1000000);获取请求结果SampleResultresult = resultBlockingQ. take ();SampIeResult中包含了当次请求的时间戳、响应时间、响应是否成功等信息。此外,该存储过程将接收的服务器返回的请求结果,保存在数据队列中,提升了存储速度;步骤S103 :触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。在发送线程发送下一个数据请求之后,再触发计算线程按照数据队列中的请求结果计算所述服务器的响应性能结果,具体的计算方式可以采用“某一持续时间段的请求数/持续时间段”的方式,当然,也可以采用其他能够计算得到响应性能结果的方式。具体的计算过程中,计算得到的服务器响应性能结果map,将发送线程发送的数据请求作为所述服务器响应性能结果map的关键字key,当所述数据请求为以具体的访问网址url时,设定value为所述url的性能结果;本申请中,发送线程发送的每一次数据请求在所述预设的具有固定长度的数据队列中都有与其对应的服务器返回的请求结果,例如发送线程针对http请求http://china. gouwu. com/,在某一固定时间段内多次发送该请求至购物网站的服务器,由于购物网站的服务器对于每次数据请求的响应会存在一些差异,所以,对每一次发送的数据请求所获得的服务器返回的请求结果,都与所述发送的数据请求相对应的进行存储;而依据存储的每一次获得请求结果累积计算在所述固定时间段内所述服务器针对所述http请求http://china. gouwu. com/最终响应性能结果。相对于现有技术中,在接收到服务器返回的请求结果时,发送线程需要等待对所述请求结果进行计算后才能发送新的数据请求而言,本申请实施例中发送线程不需要对计算过程进行等待;发送线程将接收的服务器返回的请求结果保存至数据队列中,即可发送新的数据请求;进一步的,计算线程首先在所述数据队列中获取服务器返回的请求结果,计算线程获取所述请求结果后,依据所述数据队列的属性,所述数据队列会清空所述计算线程获取的请求结果,还可以节约存储空间。参考图3,示出了本申请一种服务器性能测试方法实施例2的流程图,在本申请实施例I的基础上,步骤S103之后,还可以包括步骤S104 :将所述服务器的响应性能结果存入一预设的映射map队列中;本申请中,在某一固定时间段内,发送线程可多次发送同一数据请求至服务器也可发送不同的数据请求至服务器,并接收所述服务器返回的请求结果;无论发送线程在固定时间段内多次发送同一数据请求还是不同的数据请求,对于每次接收的服务器返回的请求结果,都会依据所述请求结果计算所述服务器的响应性能结果,并将每次计算得到的服务器的响应性能结果相累积获得在所述固定时间段内服务器总的响应性能结果,因此将依据数据队列中的请求结果计算得到的响应性能结果存入一预设的映射map队列中,以便在累积计算服务器总的响应性能结果时,随时应用存储在映射map队列中的已存服务器响应性能结果(即依据本次服务器返回的请求结果的上一次请求结果计算获得的服务器响应性能结果)。其中,保存在map队列中的响应性能结果,可以使用某一数据类型进行保存,如VajraStatCalculator,其中包含 firstTime, endTime, label, VajraStatCalculator 对象,从所述VajraStatCalculator对象中可以获取到累积的服务器响应时间和、平均响应时间、发送线程发送请求次数、响应时间平均和等,保存的响应性能结果针对每一次数据请求都经过计算得到,为了保证计算的结果全面,保存响应时间平方和,是为了用来计算全部结果的方差。参考图4,示出了本申请一种服务器性能测试方法实施例3的流程图,在实施例2的基础上,可以包括以下步骤步骤S301 :判断所述map队列中是否存在与所述请求结果具有相同识别标识的已存性能结果;如果是执行步骤S302,否则,执行步骤S303 ;本申请中对于在某一固定时间段内对于每一次数据请求都依据服务器针对该请求返回的请求结果计算服务器的响应性能结果,并将所述响应性能结果存储至map队列中,为了计算获取在所述固定时间段内服务器的整体响应性能结果,在接收到服务器针对某一次数据请求返回的请求结果时,需要结合当前请求的上一次请求所对应的响应性能结果对当前请求下服务器的响应性能结果进行计算;步骤S302 :触发所述计算线程从所述map队列中获取与所述请求结果具有相同识别标识的已存性能结果,并依据所述已存性能结果及所述请求结果计算所述服务器的响应十生倉泛会吉I ;当接收到服务器针对某一次数据请求返回的请求结果时,若在此次数据请求之前,map队列已经存储了与所述请求结果具有相同识别标识的已存性能结果,则从所述map队列中获取与所述请求结果具有相同识别标识的已存性能结果,依据所述已存性能结果及所述请求结果计算所述服务器的响应性能结果,以最终获取在所述固定时间段内服务器对发送线程发送数据请求的总的响应性能结果;步骤S303 :触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。本实施例中,判断map队列中否存在与所述请求结果具有相同识别标识的已存性能结果,当存在与所述请求结果具有相同识别标识的已存性能结果时,触发计算线程获取与所述请求结果具有相同识别标识的已存性能结果,依据所述已存性能结果及所述请求结果计算服务器的响应性能结果;使在某一固定时间段内计算服务器响应性能结果的过程中,对于服务器响应性能结果的计算过程能够连续进行,累积计算在所述固定时间段内服务器的响应性能结果,使计算结果更加全面准确。参考图5,示出了本申请一种服务器性能测试方法实施例4的流程图,本实施例可以理解为将本申请的服务器性能测试方法应用于实际中的一个具体例子,在图4的基础上,还可以包括以下步骤步骤S304 :以计算得到的新的响应性能结果对所述map队列中与所述请求结果具有相同识别标识的已存性能结果进行更新。依据所述已存性能结果及所述请求结果计算得到服务器的响应性能结果后,将计算得到的响应性能结果作为当前响应性能结果对map队列中已经存储的与所述当前响应性能结果具有相同识别标识的已存响应性能结果进行替换。参见图6,本申请中,还包括以下内容步骤S105 :创建一个数据保存线程,并触发所述数据保存线程将所述map队列中的所述响应性能结果按固定时间周期保存至性能结果保存服务器中。本申请中,步骤S105与其它步骤的先后关系不限定于图6中所示,步骤S105所示的执行过程可以应用于本申请中任何一将响应性能结果存储或更新至map队列中的具体步骤之后。本申请中为了不影响计算线程的计算效率,响应性能结果数据存储队列过长,释放性能测试工具的CPU和磁盘IO的压力,创建一数据保存线程,启动所述数据保存线程以固定的时间周期将计算得到的服务器响应性能结果发送到远程的数据保存服务器进行存储。数据保存线程将map队列中的服务器响应性能结果发送至数据保存服务器进行保存后,将map队列中保存的服务器响应性能结果进行清除,整个服务器性能测试过程重新启动一固定时间轴执行性能测试过程,发送线程发送重新发送数据请求或发送新的数据请求对服务器进行。本申请中,在每一固定时间周期结束时,由于数据保存线程需要保存数据,并将map队列中保存的服务器响应性能结果,使两个相邻周期相连接处的计算过程会中断,为了防止由于计算中断造成的数据丢失,本申请中对每一次计算得到的响应性能结果都进行加锁操作,即为每一次得到的响应性能结果都赋予连续相连的识别标识,以保证数据不会丢失。具体触发的,所述数据保存线程将所述响应性能结果可以按固定时间周期且以二进制或十进制格式保存至性能结果保存服务器中;本申请中将响应性能结果保存至性能结果保存服务器中有两种保存格式保存格式一以十进制的格式进行存储;存入的服务器响应性能结果由head和content两部分组成;a)head中保存文件信息,以| (竖线)来分割,从head中可以直接解析得到性能测试结果,以下给出具体实例2. 0 I 159 I这是个测试项目Ijmeter http://www. gouwu. com/ 10. 249. 173. 110111011111 time|numavgTime|stdDevTime|sum|sqtSumTime|min|max|avgTpserrNum | avgBytes对于head的定义,用户可以自行定义,只要可以解析得到性能测试结果即可;如上述实例中2. 0表示数据的版本号,159表示head的字符长度(依据所述head的字符长度可以直接获取head中的全部信息);“这是个测试项目”是项目名称;Jmeter表示该数据为imeter的数据结果,http://www. gouwu. com/表示请求url,
10.249. 173. 110是执行机的ip,110表示每条数据的长度,I表示一次读取I条数据(读取数据时用到),11 表不每条数据有 11 列,time I num | avgTime | stdDevTime | sum | sqtSumTime
min I max | avgTps | errNum | avgBytes |为数据列数的含义,第一列是time,第二列是num,依次类推得到最后一列为IavgBytesI ;上述实例中head的字符长度是一个重要识别标识,依据所述head的字符长度可以直接确定head中的全部数据内容。b) content中保存数据,每条数据长度是固定的,如head中已标注的110,为了控制数据的长度,位数不足的地方用空格填充,如下1285681139927
I2610261
68121
261261006268总共11列,与head中的11列——对应,1285681139927为time,I为num,依次类推,总共的长度为110 ;本申请中数据格式中明确每条数据的长度,使读取数据的过程更加方便,如需要读取第100条数据,则直接计算得到第100条数据的位置即可对其进行读取,应用空格对数据位进行填充是为了防止部分数据位上的数据位过长,影响数据的读取。保存格式二以二进制的格式进行存储;本申请中计算得到的响应性能结果的数据是数字,用数字字符进行存储会占用大量空间,如1285681139927这个时间戳共13个字符,用十进制存储占用26个字节,采用long型的二进制存储只需要占用8个字节,只要数据类型固定其存储长度也就固定了,因此不需要用空格对数据位进行填充,更好的节约了存储空间。采用二进制格式存储相对于采用十进制存储,在数据的存储结构上是类似的,不同点在于,采用二进制格式存储时,head中的数字含义由表示长度变为表示字节,head中要增加每列数据的类型,如L表示long型,D表示double型;需要说明的是,数据不需要用“ I ”分隔,也不需要用空格来填充数据位,因为数据类型固定,数据的字节数固定。对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。与上述本申请一种服务器性能测试方法实施例1所提供的方法相对应,参见图7,本申请还提供了一种服务器性能测试装置实施例1,在本实施例中,该装置可以包括线程创建模块401、第一触发模块402和第二触发模块403 ;其中所述线程创建模块401用于创建至少一个发送线程,以及与所述发送线程独立的计算线程;所述第一触发模块402用于触发所述发送线程发送当前数据请求至所述服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,再发送下一个数据请求;所述第二触发模块403用于触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。
本实施例所述的装置可以集成到性能测试工具上,也可以单独作为一个实体与性能测试工具相连,并和性能测试工具一样可以和服务器进行通信。另外,需要说明的是,当本申请所述的方法采用软件实现时,可以作为性能测试工具的服务器新增的一个功能,也可以单独编写相应的程序,本申请不限定所述方法或装置的实现方式。本实施例中,第一触发模块402在触发所述发送线程发送当前数据请求至所述服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中后,即可发送下一个数据请求;依据所述数据队列中的请求结果计算所述服务器的响应性能结果的过程由所述第二触发模块403触发所述计算线程完成;使所述发送线程不再需要等待依据所述请求结果计算所述服务器的响应性能结果的过程完成后才能发送下一个数据请求,节约了对服务器响应的请求结果进行计算处理的过程占用的大量时间,使性能测试工具在某一持续时间段内向服务器发送的请求数增多,进而使服务器接收到的请求数增多,提升了服务器处理请求的效率,节约了性能测试工具与服务器之间的传输资源。与上述本申请一种服务器性能测试方法实施例2所提供的方法相对应,参见图8,本申请还提供了一种服务器性能测试装置的优选实施例2,在本实施例中,除了图7所示的模块之外,该装置还包括队列预设模块404;所述队列预设模块404用于预设存储所述服务器返回的请求结果的具有固定长度的数据队列及预设存储所述计算线程的服务器响应性能结果的映射map队列。在本实施例中,将接收到的服务器返回的请求结果存储在具有固定长度的数据队列中,并将依据所述请求结果计算得到的服务器响应性能结果存储在映射map队列中,力口快了存储速度,进一步的由于存储速度的提升,使发送线程前后两次发送数据请求的时间间隔缩短,使发送线程在某一持续时间段内向服务器发送的请求数增多,进而使服务器接收到的请求数增多,提升了服务器处理请求的效率;另外,将接收到的服务器返回的请求结果存储在数据队列中及将所述服务器响应性能结果存储在映射map队列中节约了性能测试工具的存储空间以及磁盘10、CPU的使用率。参见图9,本申请实施例提供了一种服务器性能测试装置的优选实施例3,该装置中第一触发模块402设置有解析子模块405 ;所述解析子模块405用于解析与所述请求结果相对应的数据请求,获得所述数据请求中的请求标识。参见图10,本申请实施例提供了一种服务器性能测试装置的优选实施例4,该装置中可以包括判断模块406;所述判断模块406用于在所述第二触发模块403触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果之前,判断所述map队列中是否存在与所述请求结果具有相同识别标识的已存性能结果;如果是,则所述第二触发模块触发所述计算线程从所述map队列中获取与所述请求结果具有相同识别标识的已存性能结果,并依据所述已存性能结果及所述请求结果计算所述服务器的响应性能结果;
更新模块407;所述更新模块407用于以计算得到的新的响应性能结果对所述map队列中与所述请求结果具有相同识别标识的已存性能结果进行更新。对于上述本申请实施例提供的一种服务器性能测试装置中,所述线程创建模块401还用于创建一个数据保存线程,并触发所述数据保存线程将所述map队列中的所述响应性能结果按固定时间周期保存至性能结果保存服务器中。参见图11,与上述本申请一种服务器性能测试方法和装置实施例相对应,本申请还提供了一种JMeter系统的实施例,在本实施例中,所述JMeter系统501的控制器502上设置有一服务器性能测试装置503 ;所述服务器性能测试装置503包括线程创建模块、第一触发模块和第二触发模块;其中所述线程创建模块用于创建至少一个发送线程,以及与所述发送线程独立的计算线程;所述第一触发模块用于触发所述发送线程发送当前数据请求至所述服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,再发送下一个数据请求;所述第二触发模块用于触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或
者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,
并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。以上对本申请所提供的一种检索方法、装置及系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
权利要求
1.一种服务器性能测试方法,其特征在于,该方法包括 创建至少一个发送线程,以及与所述发送线程独立的计算线程; 触发所述发送线程发送当前数据请求至所述服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,再发送下一个数据请求; 触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。
2.根据权利要求1所述的方法,其特征在于,还包括 将所述服务器的响应性能结果存入一预设的映射map队列中。
3.根据权利要求2所述的方法,其特征在于,所述将请求结果存入预设的具有固定长度的数据队列包括 解析与所述请求结果相对应的数据请求,获得所述数据请求中的请求标识; 将所述请求标识作为所述请求结果的识别标识,存储所述请求结果至所述预设的具有固定长度的数据队列中。
4.根据权利要求3所述的方法,其特征在于,在触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果之前,还包括 判断所述map队列中是否存在与所述请求结果具有相同识别标识的已存性能结果;如果是,则所述触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果,具体为 触发所述计算线程从所述map队列中获取与所述请求结果具有相同识别标识的已存性能结果,并依据所述已存性能结果及所述请求结果计算所述服务器的响应性能结果。
5.根据权利要求4所述的方法,其特征在于,还包括 以计算得到的新的响应性能结果对所述map队列中与所述请求结果具有相同识别标识的已存性能结果进行更新。
6.根据权利要求2所述的方法,其特征在于,还包括 创建一个数据保存线程,并触发所述数据保存线程将所述map队列中的所述响应性能结果按固定时间周期保存至性能结果保存服务器中。
7.根据权利要求6所述的方法,其特征在于,具体触发所述数据保存线程将所述响应性能结果按固定时间周期且以二进制或十进制格式保存至性能结果保存服务器中。
8.根据权利要求1所述的方法,其特征在于,触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果后,还包括 清空所述数据队列中存储的请求结果。
9.一种服务器性能测试装置,其特征在于,该装置包括线程创建模块、第一触发模块和第二触发模块; 其中 所述线程创建模块用于创建至少一个发送线程,以及与所述发送线程独立的计算线程; 所述第一触发模块用于触发所述发送线程发送当前数据请求至所述服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,再发送下一个数据请求;所述第二触发模块用于触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。
10.根据权利要求9所述的装置,其特征在于,还包括队列预设模块; 所述队列预设模块用于预设存储所述服务器返回的请求结果的具有固定长度的数据队列及预设存储所述计算线程计算的服务器响应性能结果的映射map队列。
11.根据权利要求10所述的装置,其特征在于,所述第一触发模块中设置有解析子模块; 所述解析子模块用于解析与所述请求结果相对应的数据请求,获得所述数据请求中的请求标识。
12.根据权利要求11所述的装置,其特征在于,还包括判断模块; 所述判断模块用于在所述第二触发模块触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果之前 判断所述map队列中是否存在与所述请求结果具有相同识别标识的已存性能结果;如果是,则所述第二触发模块触发所述计算线程从所述map队列中获取与所述请求结果具有相同识别标识的已存性能结果,并依据所述已存性能结果及所述请求结果计算所述服务器的响应性能结果。
13.根据权利要求12所述的装置,其特征在于,还包括更新模块; 所述更新模块用于以计算得到的新的响应性能结果对所述map队列中与所述请求结果具有相同识别标识的已存性能结果进行更新。
14.根据权利要求10所述的装置,其特征在于,所述线程创建模块还用于创建一个数据保存线程,并触发所述数据保存线程将所述map队列中的所述响应性能结果按固定时间周期保存至性能结果保存服务器中。
15.一种JMeter系统,其特征在于,所述JMeter系统的控制器上设置所述权利要求9 14所述的服务器性能测试装置。
全文摘要
本申请提供了一种服务器性能测试方法、装置和系统,所述方法包括创建至少一个发送线程,以及与所述发送线程独立的计算线程;触发所述发送线程发送当前数据请求至所述服务器,并在接收到所述服务器返回的请求结果时,将所述请求结果存入预设的具有固定长度的数据队列中,再发送下一个数据请求;触发所述计算线程依据所述数据队列中的请求结果计算所述服务器的响应性能结果。应用本申请实施例提供的服务器性能测试方法,其计算过程由独立的计算线程完成,节约了由于对服务器响应请求结果进行计算处理而占用的大量时间,使在某一持续时间段内向服务器发送的请求数增多、服务器接收的请求数增多,从而提高了服务器处理请求的效率。
文档编号G06F11/34GK103064778SQ20111032116
公开日2013年4月24日 申请日期2011年10月20日 优先权日2011年10月20日
发明者孟凡慧, 王成军, 倪生华, 吴更新 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1