CN106055464B - 数据缓存集群压力测试装置及方法 - Google Patents
数据缓存集群压力测试装置及方法 Download PDFInfo
- Publication number
- CN106055464B CN106055464B CN201610363653.5A CN201610363653A CN106055464B CN 106055464 B CN106055464 B CN 106055464B CN 201610363653 A CN201610363653 A CN 201610363653A CN 106055464 B CN106055464 B CN 106055464B
- Authority
- CN
- China
- Prior art keywords
- pressure
- test
- buffer storage
- data buffer
- test pressure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Abstract
本发明公开一种数据缓存集群压力测试装置,包括:客户端模块,用于产生当前测试周期基于数据缓存集群的测试压力;测试管理模块,用于获取所述数据缓存集群响应所述测试压力时的性能参数;以及判断所述测试压力是否与所述性能参数线性相关,是则增加下一测试周期的测试压力,否则减小下一测试周期的测试压力,直至获取到测试压力和性能参数线性相关的临界值,其中,当次测试压力的调整量小于上次测试压力的调整量,所述临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值。本发明还公开了一种数据缓存集群压力测试方法。本发明能够准确的获取数据缓存集群的极限性能指标。
Description
技术领域
本发明涉及数据缓存技术领域,具体涉及一种数据缓存集群压力测试装置及方法。
背景技术
随着互联网行业的高速发展,网站数据缓存已经成为网站的一个关键性支撑技术。缓存服务如Redis,Memcache等也在不断升级发展。缓存集群的自动扩展、容错和高可用性都有了很大的改进,将能够在更大范围内承担更关键的任务。使用这些数据缓存集群,就需要对其进行详细的测试,其中,检验集群的极限性能尤为重要。
传统的压力测试方法一般通过使用测试工具软件的已有方法来进行,相对测试步骤较简单,无法动态自动调整测试参数,测试结果只能按固定的参数指标,输出相应的结果。这种固定参数的方法,无法采集被测试系统的各种临界状态(如崩溃前的状态等)详细的测试数据,也就无法获取较准确的集群极限性能指标等。
发明内容
本发明提供一种数据缓存集群压力测试装置及方法,旨在准确的获取数据缓存集群的极限性能指标。
为实现上述发明目的,本发明提供一种数据缓存集群压力测试装置,所述数据缓存集群压力测试装置包括:
客户端模块,用于产生当前测试周期基于数据缓存集群的测试压力;
测试管理模块,用于获取所述数据缓存集群响应所述测试压力时的性能参数;以及
判断所述测试压力是否与所述性能参数线性相关,是则增加下一测试周期的测试压力,否则减小下一测试周期的测试压力,直至获取到测试压力和性能参数线性相关的临界值,其中,
当次测试压力的调整量小于上次测试压力的调整量,所述临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值。
可选的,所述客户端模块还用于,通过多个程序产生当前测试周期基于数据缓存集群的测试压力,其中,各所述程序中有程序采用的编程语言不同。
可选的,所述测试压力包括读测试压力、写测试压力和混合读写测试压力,所述客户端模块还用于,产生当前测试周期基于数据缓存集群的写测试压力、读测试压力或混合读写测试压力;以及
在产生的测试压力达到测试压力和性能参数线性相关的临界值时,继续产生其它类型的测试压力进行压力测试。
可选的,在所述客户端模块产生的测试压力为读测试压力或混合读写测试压力,且获取数据缓存集群响应测试压力的性能参数的同时,所述测试管理模块还用于,判断所述数据缓存集群响应所述读测试压力或混合读写测试压力返回的读数据是否与所述写测试压力对应的写数据相同,是则输出读写准确的信息。
可选的,所述测试管理模块还用于,记录并根据各测试周期的测试压力及其对应的性能参数生成测试报告。
此外,为了上述发明目的,本发明还提供一种数据缓存集群压力测试方法,所述数据缓存集群压力测试方法包括以下步骤:
产生当前测试周期基于数据缓存集群的测试压力;
获取所述数据缓存集群响应所述测试压力时的性能参数;
判断所述测试压力是否与所述性能参数线性相关,是则增加下一测试周期的测试压力,否则减小下一测试周期的测试压力,直至获取到测试压力和性能参数线性相关的临界值,其中,
当次测试压力的调整量小于上次测试压力的调整量,所述临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值。
可选的,所述产生当前测试周期基于数据缓存集群的测试压力的步骤包括:
通过多个程序产生当前测试周期基于数据缓存集群的测试压力,其中,各所述程序中有程序采用的编程语言不同。
可选的,所述测试压力包括读测试压力、写测试压力和混合读写测试压力,所述产生当前测试周期基于数据缓存集群的测试压力的步骤包括:
产生当前测试周期基于数据缓存集群的写测试压力、读测试压力或混合读写测试压力;
在调整下一测试周期的测试压力之后,还包括:
在产生的测试压力达到测试压力和性能参数线性相关的临界值时,继续产生其它类型的测试压力进行压力测试。
可选的,在产生的测试压力为读测试压力或混合读写测试压力,且执行获取数据缓存集群响应测试压力的性能参数的同时,还执行以下步骤:
判断所述数据缓存集群响应所述读测试压力或混合读写测试压力返回的读数据是否与所述写测试压力对应的写数据相同,是则输出读写准确的信息。
可选的,所述数据缓存集群压力测试方法还包括:
记录并根据各测试周期的测试压力及其对应的性能参数生成测试报告。
本发明的数据缓存集群压力测试装置及方法,通过周期的产生测试压力模拟实际负载,并根据数据缓存集群响应测试压力时的性能参数与测试压力的线性相关性调整下一周期的测试压力,通过动态的自动调整测试压力,能够准确的获取到测试压力和性能参数线性相关的临界值,即准确的获取到数据缓存集群的极限性能指标。
附图说明
图1为本发明数据缓存集群压力测试装置第一实施例的功能模块示意图;
图2为本发明数据缓存集群压力测试装置第一实施例中数据缓存集群压力测试装置和数据缓存集群的架构示例图;
图3为本发明数据缓存集群压力测试装置第二实施例中一应用场景的测试流程示例图;
图4为本发明数据缓存集群压力测试方法第一实施例的流程示意图;
图5为本发明数据缓存集群压力测试方法第二实施例的流程示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意结合。
参照图1,在本发明数据缓存集群压力测试装置的第一实施例中,该数据缓存集群压力测试装置包括:
客户端模块10,用于产生当前测试周期基于数据缓存集群的测试压力;
需要说明的是,本实施例对数据缓存集群的压力测试包括连续写、连续读和混合读写的测试,以全面的测试数据缓存集群的读/写性能。相应的,在本实施例中,测试压力包括读测试压力、写测试压力和混合读写测试压力,分别用于描述测试周期内将数据写入数据缓存集群的写吞吐量,测试周期内从数据缓存集群读取数据的读吞吐量,测试周期内基于数据缓存集群混合读写数据的读/写吞吐量。
其中,本实施例并不限制测试周期的具体取值,可按实际需要进行设置,例如,本实施例将测试周期设置为5秒,如当进行数据缓存集群的连续写压力测试时,在5秒内以一定的吞吐量连续写入数据至数据缓存集群。
本实施例中,客户端模块10在产生当前测试周期的测试压力时,具体通过多个程序产生当前测试周期的测试压力,其中,多个程序中有程序采用的编程语言不同,例如,参照图2,客户端模块10分别启用多个ruby和java等程序产生设定的吞吐量,每个程序进程可执行读、写或混合读写操作,以对数据缓存集群进行连续写、连续读或混合读写的测试。此外,客户端模块10还统计每秒总的最大吞吐量指标。
需要说明的是,针对不同编程语言编写的程序,数据缓存集群基于对应的底层驱动实现访问支持。因此,本实施例通过多种不同编程语言编写的程序模拟多种类型的客户端,可验证数据缓存集群对多种类型客户端压力测试的稳定性,且更贴近数据缓存集群的实际工作环境,使得测试数据具有较高的置信度。
客户端模块10产生当前测试周期基于数据缓存集群的测试压力,即通过多个程序按照设定的吞吐量访问数据缓存集群(包括读、写或混合读写操作)。
测试管理模块20,用于获取数据缓存集群响应接收的测试压力时的性能参数;以及
判断当前测试周期的测试压力与性能参数是否线性相关,是则增加下一测试周期的测试压力,否则减小下一测试周期的测试压力,直至获取到测试压力和性能参数线性相关的临界值,其中,
当次测试压力的调整量小于上次测试压力的调整量,临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值。
本实施例中,数据缓存集群在接收到测试压力时,相应进行响应,包括:
接收到客户端模块10产生的读测试压力时,返回对应的读取数据;
接收到客户端模块10产生的写测试压力时,写入对应的写数据;
接收到客户端模块10产生的混合读写测试压力时,混合写入对应的写数据以及返回对应的读取数据。
参照图2,数据缓存集群由多个节点构成,数据缓存集群在进行读写操作时,具体读/写哪个节点或者哪几个节点,由数据缓存集群基于配置的负载均衡策略相应执行,本实施例不做限制,例如,模拟的Ruby客户端1对应节点1,模拟的Ruby客户端2对应节点2等。
在测试周期内,测试管理模块20实时采集数据缓存集群内各节点的性能参数(包括各节点的CPU占用率、内存I/O占用率、磁盘I/O占用率以及网络I/O占用率),并在各节点稳定之后,判断各节点的性能参数是否接收的测试压力线性相关,当性能参数与测试压力线性相关的节点的数量值达到预设阈值时,视作整个数据缓存集群的性能参数与测试压力线性相关,进而根据数据缓存集群的测试压力和性能参数之间的相关性调整下一测试周期的测试压力。
需要说明的是,在测试管理模块20增大测试压力的过程中,数据缓存集群中的部分节点可能由于自身性能原因导致宕机,无法继续提供数据缓存服务,也即无法响应分配的部分测试压力。此时,数据缓存集群将会把预分配至宕机节点的部分测试压力迁移至其它正常节点进行处理,不会影响整个数据缓存集群的性能参数和测试压力的相关性。若在测试管理模块20增大测试压力的过程中,数据缓存集群中的全部节点宕机,使得整个数据缓存集群的性能参数和测试压力线性无关,此时测试管理模块20停止当前测试周期的测试,以当前测试压力为基准,减小一定量后作为下一测试周期的测试压力进入测试。
例如,客户端模块10在测试管理模块20指示下逐步增大测试压力,具体启用多个Ruby和Java等程序进程模拟负载(即模拟客户端)从2万->4万->6万…->N/S等吞吐量逐步增大,在各测试周期内,测试管理模块20观察数据缓存集群的各节点的CPU占用率、内存I/O占用率、磁盘I/O占用率以及网络I/O占用率与负载的相关性,直至稳定。在一测试周期内,如果负载与性能消耗成线性相关,继续逐步增大吞吐量,直至这个负载与性能线性相关被严重破坏(即数据缓存集群全部节点宕机),并在负载与性能线性无关时,减小下一测试周期的测试压力(具体指示客户端模块10减小模拟负载量),并进入下一测试周期进行测试,直至负载和数据缓存系统的极限性能达到动态平衡,即获取到测试压力与性能参数线性相关的临界值,该临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值(本实施例不作具体限制,可按实际需要进行设置,例如,本实施例将其设置为10)。
为此,测试管理模块20在调整(包括增加和减小)下一测试周期的测试压力时,当次的调整量小于上一次的调整量。
需要说明的是,本实施例对数据缓存集群进行的压力测试包括连续写、连续读以及混合读写的测试,为准确获取到数据缓存集群连续写、连续读以及混合读写的性能极限指标,本实施例依次对数据缓存集群进行连续写、连续读以及混合读写的测试。在本实施例中,客户端模块10还用于产生当前测试周期基于数据缓存集群的写测试压力、读测试压力或混合读写测试压力;以及
在产生的测试压力达到测试压力和性能参数线性相关的临界值时,继续产生其它类型的测试压力进行压力测试。
进一步的,测试管理模块20还用于,记录并根据各测试周期的测试压力及其对应的性能参数生成测试报告。
在本实施例中,测试管理模块20在各测试周期获取到数据缓存集群响应接收到测试压力时的性能参数之后,按照各测试周期的对应关系,形成测试报告,包括执行连续写、连续读以及混合读写三种压力测试的各测试周期的测试压力及数据缓存集群中对应的各节点的CPU占用率、内存I/O占用率、磁盘I/O占用率以及网络I/O占用率等数据。通过该测试报告用户可以直观的得到数据缓存集群在测试压力整个连续变化过程中的性能指标,以及测试压力达到和数据缓存系统的极限性能动态平衡的极限性能指标(包括连续写、连续读以及混合读写三种测试的极限性能指标)。
本实施例提出的数据缓存集群压力测试装置,通过周期的产生测试压力模拟实际负载,并根据数据缓存集群响应测试压力时的性能参数与测试压力的线性相关性调整下一周期的测试压力,通过动态的自动调整测试压力,能够准确的获取到测试压力和性能参数线性相关的临界值,即准确的获取到数据缓存集群的极限性能指标。
进一步的,提出了本发明数据缓存集群压力测试装置的第二实施例,本实施例与第一实施例的区别在于,本实施例中的测试管理模块20还对数据缓存集群的读写准确性进行验证,继续参照图2,在本实施例中,该数据缓存集群压力测试装置包括:
客户端模块10,用于产生当前测试周期基于数据缓存集群的测试压力;
测试管理模块20,用于获取数据缓存集群响应接收的测试压力时的性能参数;以及
判断当前测试周期的测试压力与性能参数是否线性相关,是则增加下一测试周期的测试压力,否则减小下一测试周期的测试压力,直至获取到测试压力和性能参数线性相关的临界值,其中,
当次测试压力的调整量小于上次测试压力的调整量,临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值;
客户端模块10还用于产生当前测试周期基于数据缓存集群的写测试压力、读测试压力或混合读写测试压力;以及
在产生的测试压力达到测试压力和性能参数线性相关的临界值时,继续产生其它类型的测试压力进行压力测试;
测试管理模块20还用于,在客户端模块10产生的测试压力为读测试压力或混合读写测试压力,且获取数据缓存集群响应测试压力的性能参数的同时,判断数据缓存集群响应接收的读测试压力或者混合读写测试压力返回的读数据是否与产生的写测试压力对应的写数据相同,是则输出读写准确的信息。
以下仅对本实施例与第一实施例的区别进行说明,其他可具体参照第一实施例,此处不再赘述。
在本实施例中,测试管理模块20在对数据缓存集群进行压力测试的同时,还对数据缓存集群的读写准确性进行验证,具体的,在客户端模块10产生的测试压力为读测试压力或混合读写测试压力(即执行对数据缓存集群的连续读压力测试或者混合读写压力测试时),且获取数据缓存集群响应测试压力的性能参数的同时,测试管理模块20还用于判断数据缓存集群响应接收的读测试压力或者混合读写测试压力返回的读数据是否与产生的写测试压力对应的写数据相同,是则输出读写准确的信息。可选的,前述测试管理模块20生成的测试报告还可包括数据缓存集群的读写准确性。
需要说明的是,由于本实施例首先对数据缓存集群进行连续写的压力测试,客户端模块10在通过多种程序产生写测试压力时,产生的用于写入数据缓存集群的键值对设定有一定的相关性,例如,值数值为重复的“1,2,3”。相应的,测试管理模块20在获取到数据缓存集群响应接收的读测试压力或者混合读写测试压力返回的读数据时,按照这种相关性,验证数据缓存集群读写数据的准确性,例如,验证读取的值数值是否为重复的“1,2,3”,是则说明读写准确。
以下结合图3对上述第二实施例的数据缓存集群压力测试装置做进一步应用说明:
1、启动待测试的数据缓存集群的服务。
2、模拟客户端生成访问负载吞吐量。
具体地,客户端模块10分别启用多个ruby和java等程序进程产生一定量吞吐,每个进程可执行读、写或混合读写操作。
3、压力线性提升测试。
测试管理模块20控制模拟负载从2万->4万->6万…->N/S等吞吐量逐步增大,每个测试步骤持续一定时间,观察集群的各节点的CPU占用率、内存I/O占用率、磁盘I/O占用率以及网络I/O占用率与负载的相关性,直至稳定。在一测试周期内,如果负载与性能消耗成线性相关,继续逐步增大吞吐量,直至这个负载与性能线性相关被严重破坏。测试管理模块20记录所有测试吞吐指标和集群性能数据。
具体的,包括连续写、连续读和混合读写的测试:
(1)执行连续写压力测试,按上述步骤逐步提升压力,并记录数据。
(2)执行连续读压力测试,按上述步骤逐步提升压力,并记录数据。
(3)执行连续混合读写压力测试,按上述步骤逐步提升压力,并记录数据。
上述处理过程中,如果发生集群中部分节点宕机,观察整个集群状态稳定后,继续执行。
上述处理过程中,如果发生整个集群宕机,即停止,作为本次压力测试的一个临界点。
上述处理过程中,获取上次压力测试的一个临界点后,向下调整参数,重复上述步骤,直至测试参数和被测系统的极限性能达到动态平衡,获取系统较稳定的极限性能数据。
4、读写数据的键值对验证。
上述连续写测试中,写入数据的键和值数值已经设定相关性,后续连续读测试和混合读写测试中,测试管理模块20按这种相关性,进行数据验证,检测数据读写的准确性。
5、压力测试数据管理。
统计上述处理过程中客户端吞吐量,集群各节点CPU占用率、内存I/O占用率、磁盘I/O占用率、网络I/O占用率以及数据读写的准确性等数据,输出测试报告。
本实施例通过增加对数据缓存集群的读写准确性的验证,能够满足用户多样化的测试需求。
进一步的,本发明还提供了一种数据缓存集群压力测试方法,结合参照图1和图4,对应于本发明数据缓存集群压力测试装置的第一实施例,在本发明数据缓存集群压力测试方法的第一实施例中,该数据缓存集群压力测试方法包括:
步骤S1,产生当前测试周期基于数据缓存集群的测试压力;
需要说明的是,本实施例提供的数据缓存集群压力测试方法由图1所示的数据缓存集群压力测试装置执行。本实施例对数据缓存集群的压力测试包括连续写、连续读和混合读写的测试,以全面的测试数据缓存集群的读/写性能。相应的,在本实施例中,测试压力包括读测试压力、写测试压力和混合读写测试压力,分别用于描述测试周期内将数据写入数据缓存集群的写吞吐量,测试周期内从数据缓存集群读取数据的读吞吐量,测试周期内基于数据缓存集群混合读写数据的读/写吞吐量。
其中,本实施例并不限制测试周期的具体取值,可按实际需要进行设置,例如,本实施例将测试周期设置为5秒,如当进行数据缓存集群的连续写压力测试时,在5秒内以一定的吞吐量连续写入数据至数据缓存集群。
本实施例中,客户端模块10在产生当前测试周期的测试压力时,具体通过多个程序产生当前测试周期的测试压力,其中,多个程序中有程序采用的编程语言不同,例如,参照图2,客户端模块10分别启用多个ruby和java等程序产生设定的吞吐量,每个程序进程可执行读、写或混合读写操作,以对数据缓存集群进行连续写、连续读或混合读写的测试。此外,客户端模块10还统计每秒总的最大吞吐量指标。
需要说明的是,针对不同编程语言编写的程序,数据缓存集群基于对应的底层驱动实现访问支持。因此,本实施例通过多种不同编程语言编写的程序模拟多种类型的客户端,可验证数据缓存集群对多种类型客户端压力测试的稳定性,且更贴近数据缓存集群的实际工作环境,使得测试数据具有较高的置信度。
客户端模块10产生当前测试周期基于数据缓存集群的测试压力,即通过多个程序按照设定的吞吐量访问数据缓存集群(包括读、写或混合读写操作)。
步骤S2,获取数据缓存集群响应接收的测试压力时的性能参数;
步骤S3,判断当前测试周期的测试压力与性能参数是否线性相关,是则增加下一测试周期的测试压力,否则减小下一测试周期的测试压力,直至获取到测试压力和性能参数线性相关的临界值,其中,
当次测试压力的调整量小于上次测试压力的调整量,临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值。
本实施例中,数据缓存集群在接收到测试压力时,相应进行响应,包括:
接收到客户端模块10产生的读测试压力时,返回对应的读取数据;
接收到客户端模块10产生的写测试压力时,写入对应的写数据;
接收到客户端模块10产生的混合读写测试压力时,混合写入对应的写数据以及返回对应的读取数据。
参照图2,数据缓存集群由多个节点构成,数据缓存集群在进行读写操作时,具体读/写哪个节点或者哪几个节点,由数据缓存集群基于配置的负载均衡策略相应执行,本实施例不做限制,例如,模拟的Ruby客户端1对应节点1,模拟的Ruby客户端2对应节点2等。
在测试周期内,测试管理模块20实时采集数据缓存集群内各节点的性能参数(包括各节点的CPU占用率、内存I/O占用率、磁盘I/O占用率以及网络I/O占用率),并在各节点稳定之后,判断各节点的性能参数是否接收的测试压力线性相关,当性能参数与测试压力线性相关的节点的数量值达到预设阈值时,视作整个数据缓存集群的性能参数与测试压力线性相关,进而根据数据缓存集群的测试压力和性能参数之间的相关性调整下一测试周期的测试压力。
需要说明的是,在测试管理模块20增大测试压力的过程中,数据缓存集群中的部分节点可能由于自身性能原因导致宕机,无法继续提供数据缓存服务,也即无法响应分配的部分测试压力。此时,数据缓存集群将会把预分配至宕机节点的部分测试压力迁移至其它正常节点进行处理,不会影响整个数据缓存集群的性能参数和测试压力的相关性。若在测试管理模块20增大测试压力的过程中,数据缓存集群中的全部节点宕机,使得整个数据缓存集群的性能参数和测试压力线性无关,此时测试管理模块20停止当前测试周期的测试,以当前测试压力为基准,减小一定量后作为下一测试周期的测试压力进入测试。
例如,客户端模块10在测试管理模块20指示下逐步增大测试压力,具体启用多个Ruby和Java等程序进程模拟负载(即模拟客户端)从2万->4万->6万…->N/S等吞吐量逐步增大,在各测试周期内,测试管理模块20观察数据缓存集群的各节点的CPU占用率、内存I/O占用率、磁盘I/O占用率以及网络I/O占用率与负载的相关性,直至稳定。在一测试周期内,如果负载与性能消耗成线性相关,继续逐步增大吞吐量,直至这个负载与性能线性相关被严重破坏(即数据缓存集群全部节点宕机),并在负载与性能线性无关时,减小下一测试周期的测试压力(具体指示客户端模块10减小模拟负载量),并进入下一测试周期进行测试,直至负载和数据缓存系统的极限性能达到动态平衡,即获取到测试压力与性能参数线性相关的临界值,该临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值(本实施例不作具体限制,可按实际需要进行设置,例如,本实施例将其设置为10)。
为此,测试管理模块20在调整(包括增加和减小)下一测试周期的测试压力时,当次的调整量小于上一次的调整量。
需要说明的是,本实施例对数据缓存集群进行的压力测试包括连续写、连续读以及混合读写的测试,为准确获取到数据缓存集群连续写、连续读以及混合读写的性能极限指标,本实施例依次对数据缓存集群进行连续写、连续读以及混合读写的测试。在本实施例中,步骤S1包括:
产生当前测试周期基于数据缓存集群的写测试压力、读测试压力或混合读写测试压力;
步骤S3之后,还包括:
在产生的测试压力达到测试压力和性能参数线性相关的临界值时,继续产生其它类型的测试压力进行压力测试。
进一步的,在本实施例中,该数据缓存集群压力测试方法还包括:
记录并根据各测试周期的测试压力及其对应的性能参数生成测试报告。
在本实施例中,测试管理模块20在各测试周期获取到数据缓存集群响应接收到测试压力时的性能参数之后,按照各测试周期的对应关系,形成测试报告,包括执行连续写、连续读以及混合读写三种压力测试的各测试周期的测试压力及数据缓存集群中对应的各节点的CPU占用率、内存I/O占用率、磁盘I/O占用率以及网络I/O占用率等数据。通过该测试报告用户可以直观的得到数据缓存集群在测试压力整个连续变化过程中的性能指标,以及测试压力达到和数据缓存系统的极限性能动态平衡的极限性能指标(包括连续写、连续读以及混合读写三种测试的极限性能指标)。
本实施例提出的数据缓存集群压力测试方法,通过周期的产生测试压力模拟实际负载,并根据数据缓存集群响应测试压力时的性能参数与测试压力的线性相关性调整下一周期的测试压力,通过动态的自动调整测试压力,能够准确的获取到测试压力和性能参数线性相关的临界值,即准确的获取到数据缓存集群的极限性能指标。
进一步的,结合参照图2和图5,对应于本发明数据缓存集群压力测试装置的第二实施例,提出了本发明数据缓存集群压力测试方法的第二实施例,与本发明数据缓存集群压力测试方法的第一实施例的区别在于,本实施例还增加了对数据缓存集群的读写准确性的验证步骤,在本实施例中,该数据缓存集群压力测试方法包括:
步骤S1,产生当前测试周期基于数据缓存集群的测试压力;
步骤S2,获取数据缓存集群响应接收的测试压力时的性能参数;
步骤S3,判断当前测试周期的测试压力与性能参数是否线性相关,是则增加下一测试周期的测试压力,否则减小下一测试周期的测试压力,直至获取到测试压力和性能参数线性相关的临界值,其中,
当次测试压力的调整量小于上次测试压力的调整量,临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值;
其中,步骤S1包括:
产生当前测试周期基于数据缓存集群的写测试压力、读测试压力或混合读写测试压力;
步骤S3之后,还包括:
在产生的测试压力达到测试压力和性能参数线性相关的临界值时,继续产生其它类型的测试压力进行压力测试;
其中,在产生的测试压力为读测试压力或混合读写测试压力,且获取数据缓存集群响应测试压力的性能参数的同时,还执行以下步骤:
判断数据缓存集群响应接收的读测试压力或者混合读写测试压力返回的读数据是否与产生的写测试压力对应的写数据相同,是则输出读写准确的信息。
以下仅对本实施例与第一实施例的区别进行说明,其他可具体参照第一实施例,此处不再赘述。
在本实施例中,测试管理模块20在对数据缓存集群进行压力测试的同时,还对数据缓存集群的读写准确性进行验证,具体的,在客户端模块10产生的测试压力为读测试压力或混合读写测试压力(即执行对数据缓存集群的连续读压力测试或者混合读写压力测试时),且获取数据缓存集群响应测试压力的性能参数的同时,测试管理模块20还用于判断数据缓存集群响应接收的读测试压力或者混合读写测试压力返回的读数据是否与产生的写测试压力对应的写数据相同,是则输出读写准确的信息。可选的,前述测试管理模块20生成的测试报告还可包括数据缓存集群的读写准确性。
需要说明的是,由于本实施例首先对数据缓存集群进行连续写的压力测试,客户端模块10在通过多种程序产生写测试压力时,产生的用于写入数据缓存集群的键值对设定有一定的相关性,例如,值数值为重复的“1,2,3”。相应的,测试管理模块20在获取到数据缓存集群响应接收的读测试压力或者混合读写测试压力返回的读数据时,按照这种相关性,验证数据缓存集群读写数据的准确性,例如,验证读取的值数值是否为重复的“1,2,3”,是则说明读写准确。
以下结合图3对上述第二实施例的数据缓存集群压力测试方法做进一步应用说明:
1、启动待测试的数据缓存集群的服务。
2、模拟客户端生成访问负载吞吐量。
具体地,客户端模块10分别启用多个ruby和java等程序进程产生一定量吞吐,每个进程可执行读、写或混合读写操作。
3、压力线性提升测试。
测试管理模块20控制模拟负载从2万->4万->6万…->N/S等吞吐量逐步增大,每个测试步骤持续一定时间,观察集群的各节点的CPU占用率、内存I/O占用率、磁盘I/O占用率以及网络I/O占用率与负载的相关性,直至稳定。在一测试周期内,如果负载与性能消耗成线性相关,继续逐步增大吞吐量,直至这个负载与性能线性相关被严重破坏。测试管理模块20记录所有测试吞吐指标和集群性能数据。
具体的,包括连续写、连续读和混合读写的测试:
(1)执行连续写压力测试,按上述步骤逐步提升压力,并记录数据。
(2)执行连续读压力测试,按上述步骤逐步提升压力,并记录数据。
(3)执行混合读写压力测试,按上述步骤逐步提升压力,并记录数据。
上述处理过程中,如果发生集群中部分节点宕机,观察整个集群状态稳定后,继续执行。
上述处理过程中,如果发生整个集群宕机,即停止,作为本次压力测试的一个临界点。
上述处理过程中,获取上次压力测试的一个临界点后,向下调整参数,重复上述步骤,直至测试参数和被测系统的极限性能达到动态平衡,获取系统较稳定的极限性能数据。
4、读写数据的键值对验证。
上述连续写测试中,写入数据的键和值数值已经设定相关性,后续连续读测试和混合读写测试中,测试管理模块20按这种相关性,进行数据验证,检测数据读写的准确性。
5、压力测试数据管理。
统计上述处理过程中客户端吞吐量,集群各节点CPU占用率、内存I/O占用率、磁盘I/O占用率以及网络I/O占用率以及数据读写的准确性等数据,输出测试报告。
本实施例通过增加对数据缓存集群的读写准确性的验证,能够满足用户多样化的测试需求。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
出于解释的目的,前面的描述使用了特定的术语,以提供对本发明的透彻理解。然而,对本领域的技术人员来说显而易见的是,为了实践本发明并不需要具体的细节。本发明的具体实施例的前述描述是为了图示和说明的目的而呈现。它们并不意在详尽的或将本发明限于所公开的准确形式。鉴于上面的教义,许多修改和变化是可能的。为了最好地解释本发明的原理及其实际应用而示出并描述了这些实施例,从而使本领域的其他技术人员能够最好地利用本发明和具有适于预期的特定使用的各种修改的各种实施例。意在本发明的范围由随后的权利要求和其等同物来限定。
Claims (10)
1.一种数据缓存集群压力测试装置,其特征在于,所述数据缓存集群压力测试装置包括:
客户端模块,用于产生当前测试周期基于数据缓存集群的测试压力;
测试管理模块,用于获取所述数据缓存集群响应所述测试压力时的性能参数;以及
判断所述测试压力是否与所述性能参数线性相关,是则增加下一测试周期的测试压力,否则减小下一测试周期的测试压力,直至获取到测试压力和性能参数线性相关的临界值,其中,
当次测试压力的调整量小于上次测试压力的调整量,所述临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值,在性能参数与测试压力线性相关的节点的数量值达到预设阈值时,判定整个数据缓存集群的性能参数与测试压力线性相关。
2.根据权利要求1所述的数据缓存集群压力测试装置,其特征在于,所述客户端模块还用于,通过多个程序产生当前测试周期基于数据缓存集群的测试压力,其中,各所述程序中有程序采用的编程语言不同。
3.根据权利要求1所述的数据缓存集群压力测试装置,其特征在于,所述测试压力包括读测试压力、写测试压力和混合读写测试压力,所述客户端模块还用于,产生当前测试周期基于数据缓存集群的写测试压力、读测试压力或混合读写测试压力;以及
在产生的测试压力达到测试压力和性能参数线性相关的临界值时,继续产生其它类型的测试压力进行压力测试。
4.根据权利要求3所述的数据缓存集群压力测试装置,其特征在于,在所述客户端模块产生的测试压力为读测试压力或混合读写测试压力,且获取数据缓存集群响应测试压力的性能参数的同时,所述测试管理模块还用于,判断所述数据缓存集群响应所述读测试压力或混合读写测试压力返回的读数据是否与所述写测试压力对应的写数据相同,是则输出读写准确的信息。
5.根据权利要求1-4任一项所述的数据缓存集群压力测试装置,其特征在于,所述测试管理模块还用于,记录并根据各测试周期的测试压力及其对应的性能参数生成测试报告。
6.一种数据缓存集群压力测试方法,其特征在于,所述数据缓存集群压力测试方法包括以下步骤:
产生当前测试周期基于数据缓存集群的测试压力;
获取所述数据缓存集群响应所述测试压力时的性能参数;
判断所述测试压力是否与所述性能参数线性相关,是则增加下一测试周期的测试压力,否则减小下一测试周期的测试压力,直至获取到测试压力和性能参数线性相关的临界值,其中,
当次测试压力的调整量小于上次测试压力的调整量,所述临界值包括测试周期内的测试压力和性能参数线性相关,且测试压力的上次调整量小于预设阈值,在性能参数与测试压力线性相关的节点的数量值达到预设阈值时,判定整个数据缓存集群的性能参数与测试压力线性相关。
7.根据权利要求6所述的数据缓存集群压力测试方法,其特征在于,所述产生当前测试周期基于数据缓存集群的测试压力的步骤包括:
通过多个程序产生当前测试周期基于数据缓存集群的测试压力,其中,各所述程序中有程序采用的编程语言不同。
8.根据权利要求6所述的数据缓存集群压力测试方法,其特征在于,所述测试压力包括读测试压力、写测试压力和混合读写测试压力,所述产生当前测试周期基于数据缓存集群的测试压力的步骤包括:
产生当前测试周期基于数据缓存集群的写测试压力、读测试压力或混合读写测试压力;
在调整下一测试周期的测试压力之后,还包括:
在产生的测试压力达到测试压力和性能参数线性相关的临界值时,继续产生其它类型的测试压力进行压力测试。
9.根据权利要求8所述的数据缓存集群压力测试方法,其特征在于,在产生的测试压力为读测试压力或混合读写测试压力,且执行获取数据缓存集群响应测试压力的性能参数的同时,还执行以下步骤:
判断所述数据缓存集群响应所述读测试压力或混合读写测试压力返回的读数据是否与所述写测试压力对应的写数据相同,是则输出读写准确的信息。
10.根据权利要求6-9任一项所述的数据缓存集群压力测试方法,其特征在于,所述数据缓存集群压力测试方法还包括:
记录并根据各测试周期的测试压力及其对应的性能参数生成测试报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610363653.5A CN106055464B (zh) | 2016-05-26 | 2016-05-26 | 数据缓存集群压力测试装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610363653.5A CN106055464B (zh) | 2016-05-26 | 2016-05-26 | 数据缓存集群压力测试装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106055464A CN106055464A (zh) | 2016-10-26 |
CN106055464B true CN106055464B (zh) | 2018-11-20 |
Family
ID=57175088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610363653.5A Active CN106055464B (zh) | 2016-05-26 | 2016-05-26 | 数据缓存集群压力测试装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106055464B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874637A (zh) * | 2017-05-09 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 一种压力测试的方法、系统、电子设备和可读存储介质 |
CN108933709B (zh) * | 2017-05-27 | 2021-03-26 | 腾讯科技(深圳)有限公司 | 测试服务器性能的方法、装置和计算机可读存储介质 |
CN109426593A (zh) * | 2017-08-24 | 2019-03-05 | 北京京东尚科信息技术有限公司 | 自动评估系统性能的方法和装置 |
CN108536570B (zh) * | 2018-03-28 | 2020-12-25 | 口碑(上海)信息技术有限公司 | 数据直播间灰度压测的方法、装置及系统 |
CN109614302A (zh) * | 2018-11-28 | 2019-04-12 | 华为技术服务有限公司 | 业务速率调整方法及装置、相关设备 |
CN109800137A (zh) * | 2018-12-06 | 2019-05-24 | 珠海西山居互动娱乐科技有限公司 | 一种服务器性能测试方法和系统 |
CN109614304A (zh) * | 2018-12-07 | 2019-04-12 | 国家电网有限公司信息通信分公司 | 一种运行基线的计算方法及装置 |
CN112583669B (zh) * | 2020-12-11 | 2022-06-24 | 北京字节跳动网络技术有限公司 | 线上链路压力测试方法、装置、电子设备及介质 |
CN112765019B (zh) * | 2021-01-13 | 2024-01-19 | 北京鼎事兴教育咨询有限公司 | 压测方法、装置、存储介质及电子设备 |
CN116841850A (zh) * | 2023-07-18 | 2023-10-03 | 北京云宽志业网络技术有限公司 | 测试方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101072327A (zh) * | 2007-06-19 | 2007-11-14 | 中兴通讯股份有限公司 | 流媒体性能测试方法 |
CN102075384A (zh) * | 2010-12-20 | 2011-05-25 | 创新科存储技术有限公司 | 一种性能测试系统及方法 |
CN103729361A (zh) * | 2012-10-12 | 2014-04-16 | 百度在线网络技术(北京)有限公司 | 一种数据库性能测试方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104079445A (zh) * | 2013-03-29 | 2014-10-01 | 英业达科技有限公司 | 分散式压力测试系统及其方法 |
-
2016
- 2016-05-26 CN CN201610363653.5A patent/CN106055464B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101072327A (zh) * | 2007-06-19 | 2007-11-14 | 中兴通讯股份有限公司 | 流媒体性能测试方法 |
CN102075384A (zh) * | 2010-12-20 | 2011-05-25 | 创新科存储技术有限公司 | 一种性能测试系统及方法 |
CN103729361A (zh) * | 2012-10-12 | 2014-04-16 | 百度在线网络技术(北京)有限公司 | 一种数据库性能测试方法及装置 |
Non-Patent Citations (1)
Title |
---|
性能测试之压力机;huajing_wu;《http://www.51testing.com/html/17/n-213717.html》;20100511;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN106055464A (zh) | 2016-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106055464B (zh) | 数据缓存集群压力测试装置及方法 | |
US9465718B2 (en) | Filter generation for load testing managed environments | |
CN106326067B (zh) | 一种在压力测试下对cpu性能进行监控的方法及装置 | |
CN106021045B (zh) | 一种linux系统下服务器硬盘IO性能的测试方法 | |
CN107480039A (zh) | 一种分布式存储系统的小文件读写性能测试方法及装置 | |
CN107678972B (zh) | 一种测试用例的评估方法及相关装置 | |
WO2019019975A1 (zh) | 云平台性能测试方法及装置 | |
CN110059068B (zh) | 一种分布式存储系统中的数据校验方法及数据校验系统 | |
CN107908513A (zh) | 一种存储介质和存储设备性能的测试方法、装置及设备 | |
CN110297743B (zh) | 一种负载测试方法、装置和存储介质 | |
CN110532187B (zh) | 一种hdfs吞吐性能测试方法、系统、终端及存储介质 | |
CN104063307B (zh) | 一种软件测试方法和系统 | |
CN105975603A (zh) | 数据库性能测试方法及装置 | |
CN107515803A (zh) | 一种存储性能测试方法和装置 | |
CN107360050A (zh) | 视频云存储节点性能自动化测试方法及其装置 | |
CN116244133A (zh) | 硬盘测试管理方法、系统、终端及存储介质 | |
CN116450483A (zh) | 一种确定软件分配的负载的方法、装置、服务器及介质 | |
JP2007249949A (ja) | フォーマットする試験結果の文脈を提供する変数値を格納する装置 | |
CN106202374A (zh) | 一种数据处理方法及装置 | |
JP2012018628A (ja) | 分散制御システム試験実行管理装置 | |
CN113032998B (zh) | 医疗器械寿命评估方法和装置 | |
CN115794570A (zh) | 压力测试方法、装置、设备及计算机可读存储介质 | |
CN108156054A (zh) | 云桌面性能的测试方法及装置 | |
CN106855840B (zh) | 一种系统cpu分析方法和装置 | |
CN110018814A (zh) | 唯一标示符提供方法、存储介质、电子设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |