CN115987858A - 区块链网络的压力测试方法及相关设备 - Google Patents
区块链网络的压力测试方法及相关设备 Download PDFInfo
- Publication number
- CN115987858A CN115987858A CN202111205595.0A CN202111205595A CN115987858A CN 115987858 A CN115987858 A CN 115987858A CN 202111205595 A CN202111205595 A CN 202111205595A CN 115987858 A CN115987858 A CN 115987858A
- Authority
- CN
- China
- Prior art keywords
- transaction
- pressure
- pressure test
- node
- pressure measurement
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种区块链网络的压力测试方法及相关设备,属于区块链技术领域。区块链网络包括区块链节点,区块链节点包括第一区块链节点,该方法由压测设备执行。该方法包括:根据第一压力测试参数向第一区块链节点发送第一压力测试交易,第一压力测试交易包括第一压测测试用例,以便第一区块链节点执行第一压测测试用例;根据第一区块链节点的第一节点性能监控数据调整第一压力测试参数,获得第二压力测试参数;根据第二压力测试参数向第一区块链节点发送第二压力测试交易,第二压力测试交易包括第二压测测试用例,以便第一区块链节点执行第二压测测试用例。通过本公开实施例提供的方案,能够提高区块链网络压力测试的性能。
Description
技术领域
本公开涉及区块链技术领域,具体而言,涉及一种区块链网络的压力测试方法及装置、计算机可读存储介质、电子设备和计算机程序产品。
背景技术
相关技术中的用于区块链网络的压力测试工具,是由压测人员指定压力测试(简称压测)参数,然后区块链网络在压测人员人为指定的压测参数下进行压力测试,如果人为指定的压测参数过高,则有可能会使被压测的区块链网络或者区块链系统负载过大而拒绝服务,或者使区块链网络或者区块链系统崩溃,或者因为区块链网络或者区块链系统的网络接口模块接收到太多请求而影响其它模块的正常运作,从而不能反映区块链网络或者区块链系统的真正处理能力,这时需要停止区块链网络或者区块链系统的压测,人为调整压测参数后重新进行压测,在人为不能准确预测系统性能的情况下,重新压测的次数会比较多,从而降低了区块链网络或区块链系统的压测性能。
发明内容
本公开实施例提供一种区块链网络的压力测试方法及装置、计算机可读存储介质、电子设备和计算机程序产品,能够根据被压测的区块链节点的节点性能监控数据动态调整压力测试参数,从而可以提高压测性能。
本公开实施例提供一种区块链网络的压力测试方法,所述区块链网络包括区块链节点,所述区块链节点包括第一区块链节点,所述方法由压测设备执行。其中,所述方法包括:根据第一压力测试参数向所述第一区块链节点发送第一压力测试交易,所述第一压力测试交易包括第一压测测试用例,以便所述第一区块链节点执行所述第一压测测试用例;根据所述第一区块链节点的第一节点性能监控数据调整所述第一压力测试参数,获得第二压力测试参数;根据所述第二压力测试参数向所述第一区块链节点发送第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,以便所述第一区块链节点执行所述第二压测测试用例。
本公开实施例提供一种区块链网络的压力测试方法,所述区块链网络包括区块链节点,所述区块链节点包括第一区块链节点,所述方法由所述第一区块链节点执行。其中,所述方法包括:接收压测设备根据第一压力测试参数发送的第一压力测试交易,所述第一压力测试交易包括第一压测测试用例;执行所述第一压力测试交易中的所述第一压测测试用例;接收所述压测设备根据第二压力测试参数发送的第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,其中,所述第二压力测试参数是根据所述第一区块链节点的第一节点性能监控数据调整获得;执行所述第二压力测试交易中的第二压测测试用例。
本公开实施例提供一种区块链网络的压力测试装置,所述区块链网络包括区块链节点,所述区块链节点包括第一区块链节点,所述装置设置于压测设备。其中,所述装置包括:交易发送单元,用于根据第一压力测试参数向所述第一区块链节点发送第一压力测试交易,所述第一压力测试交易包括第一压测测试用例,以便所述第一区块链节点执行所述第一压测测试用例;参数调整单元,用于根据所述第一区块链节点的第一节点性能监控数据调整所述第一压力测试参数,获得第二压力测试参数;所述交易发送单元还用于根据所述第二压力测试参数向所述第一区块链节点发送第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,以便所述第一区块链节点执行所述第二压测测试用例。
本公开实施例提供一种区块链网络的压力测试装置,所述区块链网络包括区块链节点,所述区块链节点包括第一区块链节点,所述装置设置于所述第一区块链节点。其中,所述装置包括:交易接收单元,用于接收压测设备根据第一压力测试参数发送的第一压力测试交易,所述第一压力测试交易包括第一压测测试用例;交易执行单元,用于执行所述第一压力测试交易中的所述第一压测测试用例;所述交易接收单元还用于接收所述压测设备根据第二压力测试参数发送的第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,其中,所述第二压力测试参数是根据所述第一区块链节点的第一节点性能监控数据调整获得;所述交易执行单元还用于执行所述第二压力测试交易中的第二压测测试用例。
本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现如上述实施例中的区块链网络的压力测试方法。
本公开实施例提供了一种电子设备,包括:至少一个处理器;存储装置,配置为存储至少一个程序,当至少一个程序被至少一个处理器执行时,使得至少一个处理器实现如上述实施例中的区块链网络的压力测试方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例的各种可选实现方式中提供的方法。
在本公开的一些实施例所提供的技术方案中,当压测设备对区块链节点中的第一区块链节点(可以是区块链网络中的任意一区块链节点)进行压力测试时,假设压测设备开始以第一压力测试参数向该第一区块链节点发送第一压力测试交易,该第一压力测试交易包括第一压测测试用例,第一区块链节点接收到第一压力测试交易后,可以执行第一压力测试交易中的第一压测测试用例,此外,压测设备还可以获取第一区块链节点的第一节点性能监控数据,并根据该第一区块链节点的第一节点性能监控数据来动态地调整上述第一压力测试参数,获得调整后的第二压力测试参数,压测设备可以根据调整后的该第二压力测试参数向该第一区块链节点发送第二压力测试交易,该第二压力测试交易包括第二压测测试用例,该第一区块链节点接收到第二压力测试交易之后,可以执行该第二压力测试交易中的第二压测测试用例,由于被压测的第一区块链节点的第一节点性能监控数据能够反映出第一区块链节点的处理能力,因此,一方面,本公开实施例提供的方法,能够根据被压测的区块链节点的处理能力动态调整对该第一区块链节点进行压力测试的压力测试参数;另一方面,还能用于探测区块链节点的性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种区块链网络的架构示意图。
图2是本公开实施例提供的一种区块的结构示意图。
图3示意性示出了根据本公开的一实施例的区块链网络的压力测试方法的流程图。
图4示意性示出了根据本公开的一实施例的区块链节点与压测程序交互图。
图5示意性示出了根据本公开的一实施例的区块链各模块与DB交互图。
图6示意性示出了根据本公开的一实施例的区块链中CPU密集型模块的示意图。
图7示意性示出了根据本公开的一实施例的区块链压测解决方案的示意图。
图8示意性示出了根据本公开的一实施例的用例列表的示意图。
图9示意性示出了根据本公开的一实施例的交易生成池的示意图。
图10示意性示出了根据本公开的一实施例的交易生成池执行顺序图。
图11示意性示出了根据本公开的一实施例的性能监控&压测速率计算顺序图。
图12示意性示出了根据本公开的一实施例的压测执行顺序图。
图13示意性示出了根据本公开的一实施例的测试报告的生成顺序图。
图14示意性示出了根据本公开的另一实施例的区块链网络的压力测试方法的流程图。
图15示意性示出了根据本公开的一实施例的区块链网络的压力测试装置的框图。
图16示意性示出了根据本公开的另一实施例的区块链网络的压力测试装置的框图。
图17示出了适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
本公开所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在至少一个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和步骤,也不是必须按所描述的顺序执行。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本说明书中,用语“一个”、“一”、“该”、“所述”和“至少一个”用以表示存在至少一个要素/组成部分/等;用语“包含”、“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”、“第二”和“第三”等仅作为标记使用,不是对其对象的数量限制。
本公开实施例中的区块链(blockchain或block chain)是一种分布式账本,一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案。其中,区块链网络/区块链系统是用于管理、更新和维护一个或多个区块链结构的计算节点网络。区块链网络可以包括公有区块链网络(简称为公有链)、私有区块链网络(简称为私有链)或联盟区块链网络(简称为联盟链)。可以根据实际应用场景选择相应的区块链网络。
其中,公有链中的任何节点都是向任何人开放的,每个人都可以参与到这个区块链中进行计算,而且任何人都可以下载获得完整区块链数据(全部账本)。
有些区块链的应用场景下,并不希望这个系统任何人都可以参与,任何人都可以查看所有数据,只有被许可的节点才可以参与并且查看所有数据,这种区块链结构称为私有链。
因为需要保密的行业和应用也不需要公有链公开透明的特性,联盟链应运而生,联盟链仅限于联盟成员,因其只针对成员开放全部或部分功能,所以联盟链上的读写权限、以及记账规则都按联盟规则来“私人定制”。
联盟链只针对特定某个群体的成员和有限的第三方,内部指定多个预选节点为记账节点/共识节点,每个区块的生成由所有的预选节点共同决定,其他第三方的接入节点可以参与交易,但不过问记账过程,其他第三方可以通过该联盟链开放的API(ApplicationProgramming Interface,应用程序接口)进行限定查询。一般来说,联盟链适用于机构间的交易、结算、或清算等B2B(Business-to-Business,企业对企业)场景。例如多个金融机构将各自的区块链网络连接在一起,形成一个联盟性质的网络,从而便于相互数据对接和协同。
为了获得更好的性能,联盟链对于共识或验证节点的配置和网络环境有一定要求。有了准入机制,可以使得交易性能更容易提高,避免由参次不齐的参与者产生的一些问题。联盟链比公有链处理速度要快,因为节点的数量和身份都已经规定好了,所以可以使用相对松散的共识机制,因此数据的处理速度就会比公有链大大提高。
本公开实施例可以在任何适合的区块链网络中实现。
基于上述描述,本公开实施例提供一种区块链网络的压力测试方法,该区块链网络的压力测试方法可以基于区块链技术实现,区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等。
区块链网络/区块链系统是一种分布式系统,分布式系统可以由多个节点/节点设备(接入网络中的任意形式的计算设备,如服务器、终端设备)通过网络通信的形式连接形成。
下面结合附图对本公开示例实施方式进行详细说明。
参见图1,是本公开实施例提供的区块链网络/区块链系统的一个可选的架构示意图。区块链网络/区块链系统包括多个节点/节点设备(也可以称之为区块链节点),节点/节点设备之间形成点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在区块链网络中,任何机器如服务器、终端设备都可以加入而成为节点/节点设备,节点/节点设备包括硬件层、中间层、操作系统层和应用层。
参见图1示出的区块链网络中各节点/节点设备的功能,涉及的功能包括:
1)路由,节点/节点设备具有的基本功能,用于支持节点/节点设备之间的通信。
节点/节点设备除具有路由功能外,还可以具有以下功能:
2)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链网络中节点/节点设备提交的记录数据。
3)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链网络中的其他节点/节点设备,供其他节点/节点设备在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
3.1)钱包,用于提供进行虚拟资源的交易的功能,包括发起交易,即将当前交易的交易记录发送给区块链网络中的其他节点/节点设备,其他节点/节点设备验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中。
3.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链网络中的其他节点/节点设备,其他节点/节点设备验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点/节点设备发送确认。
3.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的虚拟资源转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
4)共识,用于解决并保证每一笔交易或者数据在所有记账节点上的一致性和正确性问题。区块链的共识机制就是确定达成某种共识和维护共识的方式。区块链的共识机制使其在不依靠中心化组织的情况下,依然大规模高效协作完成运转。如图1所示,具备共识功能的节点称之为记账节点/共识节点。
参见图2,区块写入区块链网络的分布式账本后,可以是图2中的任一区块,例如区块1、区块2、区块3中的任一一者。图2是本公开实施例提供的区块结构(Block Structure)的一个可选的示意图,每个区块的区块信息中可以包括本区块存储数据记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链,本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
其中,每一个区块包括区块头和区块体,区块体内包含着这个区块中囊括的交易,而区块头维护所有交易经过merkle tree(默克尔树)计算而得到的root hash(根哈希)值。
由此可知,区块链是借由密码学串接并保护内容的串连文字记录(又称区块)。每一个区块包含了前一个区块的加密散列、相应时间戳以及交易数据(可以用默克尔树算法计算的散列值表示),这样的设计使得区块内容具有难以篡改的特性。用区块链技术所串接的分布式账本能让多方有效纪录交易,且可永久查验此交易。
图3示意性示出了根据本公开的一实施例的区块链网络的压力测试方法的流程图。本公开实施例中的区块链网络可以包括区块链节点(例如,图1实施例中的节点/节点设备),区块链节点可以包括第一区块链节点,第一区块链节点可以是任一区块链节点,图3实施例所提供的方法可以由压测设备执行。
本公开实施例中,压测,即压力测试,是确立系统(例如区块链网络或者区块链系统)稳定性的一种测试方法,通常在系统正常运作范围之外进行,以考察其功能极限和隐患。
本公开实施例中的压测设备可以是任意的设置了本公开实施例提供的至少部分压测程序(一种具有区块链网络的压力测试功能的工具,可简称为区块链压力测试工具)的任意电子设备,例如服务器和/或终端。本公开实施例提供的压测程序可以包括压测客户端,压测客户端中可以实现一个或多个客户端,每个客户端可以向被压测的区块链节点例如第一区块链节点发送压力测试交易(可以包括第一压力测试交易和第二压力测试交易),因此,这里的压测设备可以是安装了压测客户端中的一个或多个客户端的任意电子设备,也可以是安装了压测程序的任意电子设备,本公开对此不做限定。
如图3所示,本公开实施例提供的方法可以包括:
在S310中,根据第一压力测试参数向所述第一区块链节点发送第一压力测试交易,所述第一压力测试交易包括第一压测测试用例,以便所述第一区块链节点执行所述第一压测测试用例。
本公开实施例中的压测测试用例是指用于对区块链网络进行压力测试的测试用例,以下可简称为测试用例或者用例,可以包括第一压测测试用例和第二压测测试用例。
由于区块链中可定制的主要是智能合约,因此,在下面的实施例中,均以测试区块链中部署(例如新增)的智能合约为例进行举例说明,但本公开并不限定于此。
在S320中,根据所述第一区块链节点的第一节点性能监控数据调整所述第一压力测试参数,获得第二压力测试参数。
本公开实施例中,压力测试参数(可简称为压测参数,包括第一压力测试参数和第二压力测试参数)可以是压测设备对区块链网络进行压力测试时所采用的任意参数,在下面的举例说明中,以压力测试参数为压测请求发送速率(包括初始压测请求发送速率和第二压测请求发送速率)进行举例说明。
本公开实施例中,压测请求发送速率是指压测设备/客户端向被压测的区块链节点(例如第一区块链节点)发送压测请求的频率,例如1s内发送多少个压测请求,由于压测请求是被组装成交易再发送给被压测的区块链节点的,因此,也可以将压测请求称之为压力测试交易(简称为压测交易,包括第一压力测试交易和第二压力测试交易),即压测设备/客户端向被压测的区块链节点发送压测交易的频率。
本公开实施例中,初始压测请求发送速率是指压测程序开始执行压力测试时,所采用的压测请求发送速率。虽然下面的举例说明中以第一压力测试参数为初始压测请求发送速率为例进行举例说明,但本公开并不限定于此,第一压力测试参数可以是距离当前时刻最近所采用的、且不为0的压测请求发送速率。
在示例性实施例中,根据所述第一区块链节点的第一节点性能监控数据调整所述第一压力测试参数,获得第二压力测试参数,可以包括:获取初始压测请求发送速率和节点性能监控频率,所述第一压力测试参数包括所述初始压测请求发送速率,所述第二压力测试参数包括第二压测请求发送速率;获取压测程序性能监控数据;根据所述节点性能监控频率从所述第一区块链节点获得所述第一节点性能监控数据;根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率。
本公开实施例中,第一节点性能监控数据是指按照设定的节点性能监控频率,定时从第一区块链节点获取的与该第一区块链节点所在机器(电子设备)的处理能力相关的任意数据。节点性能监控频率可以根据实际需求进行设置,区块链网络中的所有区块链节点可以设置相同的节点性能监控频率,也可以为不同的区块链节点设置不同的节点性能监控频率,本公开对此不做限定。
本公开实施例中,压测程序性能监控数据是指与压测程序所在机器(例如压测设备)的性能相关的任意数据。本公开实施例提供的方法可以结合第一节点性能监控数据和压测程序性能监控数据,动态调整第一区块链节点的压测请求发送速率,例如将初始压测请求发送速率调整为第二压测请求发送速率。
在示例性实施例中,所述第一节点性能监控数据可以包括所述第一区块链节点的第一中央处理器(Central Processing Unit,CPU)使用率;所述压测程序性能监控数据可以包括所述压测设备的第二中央处理器使用率。其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,可以包括:若所述第一中央处理器使用率或者所述第二中央处理器使用率大于或等于中央处理器使用率阈值,则将所述第二压测请求发送速率设置为第一值。
本公开实施例中,中央处理器使用率阈值可以根据实际需求进行设置,第一中央处理器使用率对应的中央处理器使用率阈值与第二中央处理器使用率对应的中央处理器使用率阈值可以相同也可以不同,本公开对此不做限定。在下面的举例说明中均以80%进行举例说明,但本公开并不限定于此,例如还可以设置为85%或者90%等。
在示例性实施例中,所述第一节点性能监控数据可以包括所述第一区块链节点的第一内存使用率;所述压测程序性能监控数据可以包括所述压测设备的第二内存使用率。其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,可以包括:若所述第一内存使用率或者所述第二内存使用率大于或等于内存使用率阈值,则将所述第二压测请求发送速率设置为第二值。
本公开实施例中,内存使用率阈值可以根据实际需求进行设置,第一内存使用率对应的内存使用率阈值与第二内存使用率对应的内存使用率阈值可以相同也可以不同,本公开对此不做限定。在下面的举例说明中均以80%进行举例说明,但本公开并不限定于此,例如还可以设置为85%或者90%等。
在示例性实施例中,所述第一节点性能监控数据可以包括所述第一区块链节点的第一网络带宽使用率;所述压测程序性能监控数据可以包括压测设备的第二网络带宽使用率。其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,可以包括:若所述第一网络带宽使用率或者所述第二网络带宽使用率大于或等于网络带宽使用率阈值,则将所述第二压测请求发送速率设置为第三值。
本公开实施例中,网络带宽使用率阈值可以根据实际需求进行设置,第一网络带宽使用率对应的网络带宽使用率阈值与第二网络带宽使用率对应的网络带宽使用率阈值可以相同也可以不同,本公开对此不做限定。在下面的举例说明中均以80%进行举例说明,但本公开并不限定于此,例如还可以设置为85%或者90%等。
在示例性实施例中,所述区块链网络可以包括交易池,所述第一节点性能监控数据可以包括所述交易池中的待打包交易数。其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,可以包括:若所述待打包交易数大于或等于交易池交易数阈值,则将所述第二压测请求发送速率设置为第四值。
区块链网络中的交易池用于存储待打包到区块的交易(包括压力测试交易,但不限于压力测试交易,还可以包括其它交易),因此,将交易池中的交易数量称之为待打包交易数。
本公开实施例中,交易池交易数阈值可以根据实际需求进行设置,在下面的实施例中,以交易池交易数阈值设置为交易池能够存储的交易数量的上限的90%进行举例说明,但本公开并不限定于此。
在示例性实施例中,所述区块链网络可以包括第一交易队列,所述第一节点性能监控数据可以包括所述第一交易队列中的待验签交易数。其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,可以包括:若所述待验签交易数大于或等于待验签交易阈值,则将所述第二压测请求发送速率设置为第五值。
本公开实施例中,为了将区块链网络中的交易队列与交易生成池中的交易队列区别开来,将区块链网络中的交易队列称之为第一交易队列,第一交易队列用于存储还没有经过签名验证(简称为验签)的交易,因此,将第一交易队列中的交易数量称之为待验签交易数。
本公开实施例中,待验签交易阈值可以根据实际需求进行设置,在下面的实施例中,以待验签交易阈值设置为10000进行举例说明,但本公开并不限定于此。
本公开实施例中,第一值、第二值、第三值、第四值和第五值可以根据实际需求进行设置,第一值、第二值、第三值、第四值和第五值可以相同,也可以不同。在下面的实施例中,均以第一值、第二值、第三值、第四值和第五值相同,且均设置为0进行举例说明,但本公开并不限定于此。
在示例性实施例中,所述区块链网络可以包括交易池和第一交易队列,所述第一节点性能监控数据可以包括所述第一区块链节点的第一中央处理器使用率、第一内存使用率、第一网络带宽使用率、所述交易池中的待打包交易数以及所述第一交易队列中的待验签交易数;所述压测程序性能监控数据可以包括所述压测设备的第二中央处理器使用率、第二内存使用率、第二网络带宽使用率。其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,可以包括:若连续N次所述第一中央处理器使用率和所述第二中央处理器使用率均小于中央处理器使用率阈值,所述第一内存使用率和所述第二内存使用率均小于内存使用率阈值,所述第一网络带宽使用率和所述第二网络带宽使用率均小于网络带宽使用率阈值,所述待打包交易数小于交易池交易数阈值,且所述待验签交易数小于待验签交易阈值,则将所述初始压测请求发送速率上调第一百分比,作为所述第二压测请求发送速率;其中,N为大于1的正整数。
本公开实施例中,第一百分比可以根据实际需求设置,在下面的实施例中,以5%进行举例说明,但本公开并不限定于此。
在示例性实施例中,所述区块链网络可以包括交易池和第一交易队列,所述第一节点性能监控数据可以包括所述第一区块链节点的第一中央处理器使用率、第一内存使用率、第一网络带宽使用率、所述交易池中的待打包交易数以及所述第一交易队列中的待验签交易数;所述压测程序性能监控数据可以包括所述压测设备的第二中央处理器使用率、第二内存使用率、第二网络带宽使用率。其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,可以包括:若连续N次出现以下至少一项:所述第一中央处理器使用率或者所述第二中央处理器使用率大于或等于中央处理器使用率阈值;所述第一内存使用率或者所述第二内存使用率大于或等于内存使用率阈值;所述第一网络带宽使用率或者所述第二网络带宽使用率大于或等于网络带宽使用率阈值;所述待验签交易数大于或等于待验签交易阈值;所述待验签交易数大于或等于待验签交易阈值,则将所述初始压测请求发送速率下降第二百分比,作为所述第二压测请求发送速率;其中,N为大于1的正整数。
本公开实施例中,第二百分比可以根据实际需求设置,在下面的实施例中,以10%进行举例说明,但本公开并不限定于此。
本公开实施例中,N是可配置的,可以根据实际场景进行设置,本公开对此不做限定。
在S330中,根据所述第二压力测试参数向所述第一区块链节点发送第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,以便所述第一区块链节点执行所述第二压测测试用例。
需要说明的是,本公开并不限定S310-S330的执行步骤,例如可以S310和S320可以并行执行,即客户端在按照第一压力测试参数向第一区块链节点发送第一压力测试交易的同时,压测设备还可以同时获取第一区块链节点的第一节点性能监控数据,以用于调整第一压力测试参数获得第二压力测试参数。
在示例性实施例中,根据所述第二压力测试参数向所述第一区块链节点发送第二压力测试交易,可以包括:从连接池中获取所述第一区块链节点与第一压测客户端的长连接;所述第一压测客户端从交易生成池的第二交易队列中获取所述第二压力测试交易;所述第一压测客户端通过所述第一区块链节点与所述第一压测客户端的长连接,按照所述第二压测请求发送速率向所述第一区块链节点发送所述第二压力测试交易。
本公开实施例中的长连接是指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,双方发链路检测包。与之对应的是短连接,短连接是指通信双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接。由于每个TCP(Transmission Control Protocol,传输控制协议)连接都需要三步握手,这需要时间,本公开实施例通过建立被压测的区块链节点与压测客户端中的客户端(例如这里假设第一区块链节点与客户端中的第一压测客户端建立了长连接)之间的长连接,可以提高压力测试速度和效率。
在示例性实施例中,所述方法还可以包括:获取各区块链节点的网络地址和各区块链节点的连接数;根据各区块链节点的网络地址和各区块链节点的连接数,建立各区块链节点与各压测客户端的长连接,所述压测客户端包括所述第一压测客户端;将各区块链节点与各压测客户端的长连接存入所述连接池。其中,各区块链节点与各压测客户端的长连接包括所述第一区块链节点与所述第一压测客户端的长连接。
在示例性实施例中,所述方法还可以包括:获取待执行压测测试用例的用例名,并向用例列表发送所述待执行压测测试用例的用例名,所述用例列表中包括压测测试用例,每个压测测试用例具有合约名、合约参数、全局唯一的用例名和相同的用例接口;利用所述待执行压测测试用例的用例名对应的用例接口,从所述用例列表的压测测试用例中获取待执行压测测试用例及其合约名和合约参数;将所述待执行压测测试用例及其合约名和合约参数组装成压力测试交易;对组装的压力测试交易进行签名,获得签名后的压力测试交易;将签名后的压力测试交易存入所述第二交易队列中。其中,所述第二交易队列中的签名后的压力测试交易可以包括所述第一压力测试交易和所述第二压力测试交易;所述待执行压测测试用例可以包括所述第一压测测试用例和所述第二压测测试用例。
本公开实施例中,以测试部署在区块链网络中的智能合约为例,则每个压测测试用例中可以包括被压力测试的智能合约的合约名以及对应的合约参数,其中,合约参数根据具体的智能合约的不同而不同。测试用例中有合约名和合约参数。
本公开实施例中,压测程序可以包括交易生成池,交易生成池可以定制多长时间生成多少交易(这里指压测交易),交易生成池可以调用用例列表中的待执行压测测试用例,组装成压测交易。组装压测交易和对组装的压测交易进行签名是通用操作,可以抽象出来由交易生成池完成。
本公开实施方式提供的区块链网络的压力测试方法,当压测设备对区块链节点中的第一区块链节点(可以是区块链网络中的任意一区块链节点)进行压力测试时,假设压测设备开始以第一压力测试参数向该第一区块链节点发送第一压力测试交易,该第一压力测试交易包括第一压测测试用例,第一区块链节点接收到第一压力测试交易后,可以执行第一压力测试交易中的第一压测测试用例,此外,压测设备还可以获取第一区块链节点的第一节点性能监控数据,并根据该第一区块链节点的第一节点性能监控数据来动态地调整上述第一压力测试参数,获得调整后的第二压力测试参数,压测设备可以根据调整后的该第二压力测试参数向该第一区块链节点发送第二压力测试交易,该第二压力测试交易包括第二压测测试用例,该第一区块链节点接收到第二压力测试交易之后,可以执行该第二压力测试交易中的第二压测测试用例,由于被压测的第一区块链节点的第一节点性能监控数据能够反映出第一区块链节点的处理能力,因此,一方面,本公开实施例提供的方法,能够根据被压测的区块链节点的处理能力动态调整对该第一区块链节点进行压力测试的压力测试参数;另一方面,还能用于探测区块链节点的性能。
下面结合图4-图13对本公开实施例提供的方法进行举例说明,但本公开并不限定于此。
本公开实施例中,压测程序将压测请求/压测交易发送给区块链节点,区块链节点接收到压测请求/压测交易后,对压测请求/压测交易进行签名验证,将验签通过、且账本中还不存在的压测请求/压测交易放入交易池中,出块节点(例如可以从图1中的共识节点中确定)将交易池中的交易(包括压测交易)打包到区块中并将区块广播给其它区块链节点,区块链节点对接收到的区块进行共识,区块链节点取出达成共识的区块(这时的区块还没有存入区块链)中的压测交易,并执行压测交易中的智能合约,执行压测交易中的智能合约改变或生成的数据称之为合约数据,然后将合约数据、区块数据(包括压测交易、区块的区块头以及合约数据的默克尔树)存入账本,即存入区块链,并返回交易响应给压测程序。交易响应是指执行压测交易中的智能合约(可简称为合约)获得的结果。
本公开实施例中采用的共识算法可包括但不限于:BFT(Byzantine FaultTolerance,拜占庭容错)算法、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错)算法、VBFT(一种混合算法,它是结合了PoS(Proof of Stake,权益证明)、VRF(Verifiable Random Function,可验证随机函数)和BFT的共识算法,是OCE(OntologyConsensus Engine,本体共识引擎)的共识算法)等等。
图4示意性示出了根据本公开的一实施例的区块链节点与压测程序交互图。
如图4所示,以区块链网络中包括的4个区块链节点为例,分别表示为节点(node)1、节点2、节点3和节点4,压测程序(Stress Test APP)分别向节点1、节点2、节点3和节点4发送压测请求/压测交易,节点1、节点2、节点3和节点4之间可以相互广播交易(包括压测交易)及区块。
本公开实施例中,压测程序可以同时并行的向多个节点发送压测交易,也可以向一个节点并行的发送多个压测交易,即可以是多对一,也可以是一对多的映射关系。
从图4实施例可以看出,区块链中涉及大量的广播,将消耗大量带宽,当压测程序没有限制地向区块链节点发送压测请求时,若达到网络带宽上限,会使节点间的消息传播受到影响,从而降低区块链的整体性能,因此压测请求的发送量/发送速率(即压测请求发送速率)需要进行控制。
图5示意性示出了根据本公开的一实施例的区块链各模块与DB(database,数据库)交互图。
如图5所示,区块链网络中的各个区块链节点可以包括网络层、交易队列(图5实施例中是指第一交易队列)、交易池、共识层、合约层和账本层。
通过网络层接收压测程序发送过来的压测交易,先按接收时间顺序的存储在交易队列中,然后顺序读取交易队列中的压测交易,进行签名验证,签名验证通过后,还需要查询DB,看DB中是否已经存储了该压测交易,只有DB中尚未存储该压测交易时,才将验签通过的压测交易存入交易池中,称之为A.交易验重/交易查重;然后,从交易池中选择压测交易,打包成区块,调用共识层中存储的共识算法对区块进行共识,共识通过之后,调用合约层中的相应智能合约,此时需要合约层与DB进行B.合约查询的操作,以执行区块中的压测交易,然后账本层将执行获得的区块数据和合约数据存储至数据库中,即账本层与DB进行C.保存数据的操作。
由此可以看出,在交易池、合约层、账本层异步的模式下,压测程序发送过来的压测交易需经过交易验重才能放入交易池中,交易查重操作涉及数据库的查询,而此时合约执行,及账本数据的存储都涉及数据库操作,三者存在竞争关系,当压测程序没有限制地发送压测请求、并达到DB的处理能力上限时,会使当前区块的合约执行或历史区块数据的存储速度下降,从而降低区块链的整体性能。
图6示意性示出了根据本公开的一实施例的区块链中CPU密集型模块的示意图。
如图6所示,交易池的验签(交易池验签)及合约层执行合约均是CPU密集型操作,如果压测程序无限制地发送压测请求/压测交易,验签操作会增加CPU的调度,从而使合约的执行变慢,影响区块链系统的性能。
综合图4至图6可知,如果能根据区块链节点的现状,动态地调节压测程序的压测参数,从而探测区块链的最佳性能,是非常重要的。
图7示意性示出了根据本公开的一实施例的区块链压测解决方案的示意图。
如图7所示,提供了一种区块链中基于节点性能进行自调节的压力测试解决方案。
配置文件100可以用于提供压测程序所需要的各种配置信息,例如可以包括但不限于如下信息:
期待TPS(Transactions Per Second,每秒传输的事务处理个数):由于压测程序启动时并不知道区块链的性能,因此需提供一个初始压测请求发送速率(也可以称之为初始压测请求发送频率),使压测程序运行起来,压测请求发送频率会在后续的压测过程中每隔一段时间进行更新;
节点性能监控频率:用于指定节点性能监控指标(例如节点性能监控数据,包括第一节点性能监控数据)的采样频率;
压测时间:指定进行压测的压测时长,用于决定压测结束时间;
压测交易数量:指定进行压测的总交易数量,当没有指定压测时间时,这个参数决定压测结束时间,如果压测时间和压测交易数量这两个参数均没有指定,则压测可以一直执行;
待执行用例:指定待压测的测试用例,也可以称之为待执行压测测试用例;
节点URL(Uniform Resource Locator,统一资源定位器)列表:包括区块链网络中的各个区块链节点的网络地址的URL列表;
单节点连接数:是指每个区块链节点起用的长连接的连接数,单个区块链节点和单个客户端之间的连接数。
压测程序可以包括命令行工具和组件,这里主要介绍一些核心组件,不排除还可以包括其它组件。命令行工具可以用于在压测过程中输入压测指令。
如图7所示,组件可以包括配置工厂101、压测程序性能监控器200、节点性能监控器300、压测速率控制器400、交易生成池500、用例列表501、连接池600、压测客户端700以及压测报告生成器800。
配置工厂101可以用于获取配置文件100,加载配置文件100中的配置项,例如将单节点连接数和节点URL列表发送给连接池600,以用于创建客户端与对应区块链节点之间的长连接,将待执行用例的用例名发送给交易生成池500,将节点性能监控频率发送给节点性能监控器300,将期待TPS、压测时间和压测交易数量发送给压测客户端700。
交易生成池500可以根据配置文件100中设置的待执行用例,从用例列表501中调用所指定待压测的测试用例。
连接池600可以根据配置文件100中的节点URL列表来建立压测客户端中的各个客户端与对应区块链节点之间的长连接。例如,连接池600中可以维护连接1至连接K,K为大于或等于0的整数,这里的连接1至连接K均可以为长连接,但本公开并不限定于此。
压测客户端700可以包括客户端1至客户端M,M为大于或等于1的整数。压测客户端700可以从交易生成池500中获取交易(压测交易),从连接池600中获取连接,利用获取的连接对应的客户端,并通过获取的连接将获取的交易发送至对应的区块链节点。
区块链网络900可以包括区块链节点1至区块链节点P,P为大于或等于1的整数。
图7实施例中,假设客户端1向区块链节点1发送压测请求,客户端M向区块链节点P发送压测请求。但本公开并不限定于此,本公开实施例中,一个客户端可以向多个区块链节点发送压测请求,一个区块链节点也可以同时从多个客户端接收压测请求,一个区块链节点和一个客户端之间可以建立一个或多个连接,当一个区块链节点和一个客户端之间建立多个连接(例如配置文件100中的单节点连接数大于1)时,一个区块链节点可以从一个客户端通过这多个连接接收多个压测请求。
节点性能监控器300从区块链网络900获取的监控数据包括各个区块链节点的节点性能监控数据,其中第一区块链节点的节点性能监控数据称之为第一节点性能监控数据。压测程序性能监控器200用于获取压测程序性能监控数据,压测程序性能监控器200和节点性能监控器300向压测速率控制器400上报的数据包括节点性能监控数据和压测程序性能监控数据。
压测客户端700可以从各区块链节点接收交易响应,并将交易响应发送给压测报告生成器800,以用于生成测试报告801,测试报告801可以包括但不限于TPS、请求数、成功数、失败数、发送速率(这里可以包括初始压测请求发送速率以及在压测过程中所采用的所有压测请求发送速率)、最大/最小/平均延迟等。
图8示意性示出了根据本公开的一实施例的用例列表的示意图。
如图8所示,用例列表(也可称为测试用例列表)501中可以包括一系列的测试用例,测试用例包括用例名,例如用例n,n为大于或等于0的整数。例如,
用例名:用例n
-createContractRequest(合约名,参数列表)。
用例接口
-createContractRequest(合约名,参数列表)。
createContractRequest是一个创建合约请求的函数,函数参数包括合约名和参数列表,合约名是被测试的智能合约的名称,参数列表可以包括合约参数。
本公开实施例中,所有的测试用例均实现相同的接口,便于通过反射机制进行调用,并提供一个全局唯一的测试用例名(简称为用例名)。即所有的测试用例均生成相同的用例接口,在调用测试用例时,该用例接口根据测试用例名即可分辨出调用的是哪个测试用例。
图9示意性示出了根据本公开的一实施例的交易生成池的示意图。
如图9所示,交易生成池500可以包括协程池(用于交易组装)、用例获取方法、交易签名模块以及交易队列,图9实施例中的交易队列是指第二交易队列。
交易生成池500可以用于提前准备好将要发送给区块链节点的压测请求或者压测交易。
本公开实施例中,协程池中可以具有多个协程,利用多协程并行能充分利用多CPU的优势,快速准备好大量的用于进行压力测试的压测请求或者压测交易。例如,假设配置文件中设置的压测交易数量为10000,则需要提前准备好10000个压测交易,此时假设运行100个协程,同时并行组装100个压测交易。
需要说明的是,本公开并不限定被动态的调整的压测参数为压测请求发送速率,在其它实施例中,还可以通过监控被压测的第一区块链节点的第一节点性能监控数据,动态调整交易生成池中的压测交易的数量和/或交易生成池中的压测交易的生成速率,由此实现控制发送给区块链节点的压测请求的数量和/或速率。
图10示意性示出了根据本公开的一实施例的交易生成池执行顺序图。
如图10所示,交易生成池500生成压测交易的顺序可以包括:
在利用协程池中的协程进行交易组装时,可以根据配置文件提供的待执行压测测试用例的用例名,利用反射调用用例列表501中的测试用例,该被调用的测试用例称之为待执行压测测试用例。
协程对获取的测试用例进行组装,生成压测交易。即利用协程向用例列表501发送用例名,用例列表501根据接收到的用例名,通过相应用例名的用例接口调用相应的测试用例,并获取被调用的测试用例中包含的合约名和参数列表,将被调用的测试用例及其合约名和参数列表组装成压测交易。
协程将组装好的压测交易发送给交易签名模块,以进行交易签名。
交易签名模块将签名好的压测交易返回至协程。
协程将签名好的压测交易存入交易池队列,这里的交易池队列是指交易生成池中的第二交易队列。
可以循环执行上述操作,继续生成新交易,这里新交易是指新的压测交易。
本公开实施例中,压测程序性能监控器200可以用于监控压测程序所在机器的CPU、内存、网络状态,及请求发送数量/成功响应数量/超时数量/最小延迟/最大延迟/平均延迟等。根据将监控获得的压测程序所在机器的CPU、内存、网络状态,可以获得第二CPU使用率、第二内存使用率、第二网络带宽使用率。
压测程序性能监控器200可以记录压测客户端700发送的压测请求,统计可获得请求发送数量(可简称为请求数);压测程序性能监控器200记录压测程序发送压测请求的时间和接收交易响应的时间,统计可获得超时数量、最小延迟、最大延迟和平均延迟等参数,对接收到的交易响应进行分析和统计可获得成功响应数量(可简称为成功数)和失败响应数量(可简称为失败数)。
节点性能监控器300可以用于按配置的节点性能监控频率,定期从各节点获取交易池交易数量(即待打包交易数)、交易等待队列长度(也可称之为交易队列长度,即待验签交易数)及节点块高、节点所在机器的CPU、内存、网络、和硬盘状况等,以第一区块链节点为例,则可以根据节点所在机器的CPU、内存、网络、和硬盘状况,获得第一中央处理器使用率、第一内存使用率、和第一网络带宽使用率。
压测速率控制器400可以根据从压测程序性能监控器200及节点性能监控器300获取的数据,动态计算新的压测请求发送速率(简写为新压测速率,例如第二压测请求发送速率)。
图11示意性示出了根据本公开的一实施例的性能监控&压测速率计算顺序图。
如图11所示,性能监控和压测速率计算可以包括:
节点性能监控器300从各个区块链节点获取各个区块链节点的节点性能数据(即节点性能监控数据)。节点性能数据可以包括对应区块链节点的交易队列长度、交易池交易数量、CPU/内存/硬盘/网络状况等中的任意一种或者多种。
压测程序性能监控器200获取压测程序监控数据,即压测程序性能监控数据。
压测程序性能监控器200向压测速率控制器400上报监控数据,即压测程序性能监控数据。
节点性能监控器300向压测速率控制器400上报监控数据,即节点性能监控数据。
压测速率控制器400根据从压测程序性能监控器200接收到的压测程序性能监控数据和从节点性能监控器300接收到的节点性能监控数据,计算各节点的新压测速率。
压测速率控制器400向压测客户端700上报新压测速率。
上述步骤可以循环执行,且并不限制各步骤执行的执行先后顺序。
例如,新压测速率计算方法可以包括:
假设初始压测请求发送速率等于期待TPS。
1.当压测程序性能监控器200上报的第二CPU使用率、或者节点性能监控器300上报的第一CPU使用率达到80%(可配置)时,设置第二压测请求发送速率=0;
2.当压测程序性能监控器200上报的第二内存使用率、或者节点性能监控器300上报的第一内存使用率达到80%(可配置)时,设置第二压测请求发送速率=0;
3.当压测程序性能监控器200第二网络带宽使用率、或者节点性能监控器300上报的第一网络带宽使用率达到80%时(可配置)时,设置第二压测请求发送速率=0;
4.当交易池交易数(即待打包到区块的交易数)达到交易池上限的90%时,设置第二压测请求发送速率=0,说明对应节点的处理能力不足,当前采用的第一压测速率(例如初始压测请求发送速率)过高;
5.当节点的第一交易队列的交易数(即还没验签的交易)>10000时,说明对应节点的处理能力不足,设置第二压测请求发送速率=0。
6.如果连续N次(可配置)没有出现上述1-5的情况,则可以将对应节点的当前采用的第一压测速率(例如初始压测请求发送速率)上调5%(可配置)。
例如,如果按照初始压测请求发送速率N,在1秒内对区块链节点1(第一区块链节点)发送N个压测请求,N个压测请求的执行过程中均没有出现上述1-5的情况,则将区块链节点1的压测请求发送速率在初始压测请求发送速率的基础上提升5%,作为新压测速率。
本公开实施例中,节点恢复正常后,如果之前连续N次(可配置)监测结果出现上述1-5的情况之一,则可以将对应节点的当前采用的第一压测速率(例如初始压测请求发送速率)下降10%(可配置)。
以区块链节点1为例,假设区块链节点1在按照初始压测请求发送频率进行第一个压测请求时,出现了第一CPU使用率达到80%,则将区块链节点1的压测请求发送速率降为0,停止一段时间不向区块链节点1发送压测请求,直到检测到区块链节点1的第一CPU使用率重新降低到80%以下,再重新开始让区块链节点1按照初始压测请求发送频率进行第2个压测请求,以此类推,直到对区块链节点1执行N个压测请求,若这N个压测请求的执行过程中均出现了上述1-5中的情况之一,则将区块链节点1的初始压测请求发送速率下降10%,作为第二压测请求发送速率。
通过上述方法不断地动态调整压测参数,从而保证最终的压测速率接近节点的处理能力。
本公开实施例中,连接池600可以用于维护一批从压测节点(例如,图7中的客户端1至客户端M)到区块链节点(例如,图7中的区块链节点1至区块链节点P)的长连接,重复利用连接池中的连接(例如,图7中的连接1至连接K)发送压测请求,节省连接建立时间,从而提升压测请求的发送效率,也限制了整体的连接数。
本公开实施例中,假设每个区块链节点的单节点连接数相同,则连接池的总连接数可以等于区块链节点的节点数*每个区块链节点的连接数(见配置文件,单个节点和单个客户端之间的连接数)。每个区块链节点的连接数可以参见配置文件中配置的单节点连接数。若每个区块链节点设置的单节点连接数不同,则可以对每个区块链节点的单节点连接数进行累计求和获得连接池的总连接数。
本公开实施例中,压测客户端700按压测速率发送压测请求。可以配置两种压测模式:
1.动态调整压测参数,常用于节点代码改动后,不确定当前系统性能时,可以用于对性能摸底压测。
2.按指定的压测参数进行定速压测,常用于长稳测试。
例如,可以先给一个较大的初始压测速率,按照本公开实施例提供的方法动态调整,慢慢下降,之后再用这个稳定下来的新压测速率进行压力测试。
图12示意性示出了根据本公开的一实施例的压测执行顺序图。
如图12所示,压测执行可以包括:
当压测速率不为0时,压测客户端700可以从交易生成池的交易队列(图12中是指第二交易队列)获取压测交易。
压测客户端700可以从连接池获取连接。
压测客户端700可以通过获取的连接将获取的压测交易/压测请求异步发送至对应的区块链节点。
上述步骤可以循环执行N次,N=压测速率,这里是指当前采用的第一压测速率,例如初始压测速率。
在上述循环N次执行过程中,若某次出现了上述1-5情况中的任意一种或者多种,则将压测速率调整为0,当压测速率为0,无操作。
当压测速率为0,睡眠(1-执行N次的时间)*秒之后,可以继续循环执行上述步骤。
本公开实施例中,压测报告生成器800可以用于定期(可配置)将从压测客户端700获取到的性能数据进行统计,生成HTML(HyperText Markup Language,超文本标记语言)格式的测试报告801。
图13示意性示出了根据本公开的一实施例的测试报告的生成顺序图。
如图13所示,压测客户端700向区块链节点异步发送压测请求。
压测客户端700将从区块链节点获取到的数据以及压测程序自身监控及记录的数据发送给压测报告生成器800,压测报告生成器800异步定期输出测试报告801,测试报告801可以包括TPS、请求数、成功数、失败数、发送速率、最大/最小/平均延迟等。
可以循环执行上述测试报告的生成步骤。
本公开实施方式提供的方法,提供了一种能根据区块链节点处理能力动态调整压测参数的区块链压力测试工具,一方面,除了能进行压力测试外,还能根据区块链节点的实时处理能力动态调整压测参数,从而能探测出区块链系统的最大性能;另一方面,将用于测试智能合约的测试用例与通用的交易组装、交易签名模块分别抽象出来,新增测试用例只需要将合约名及合约参数组装起来传递给交易生成池,交易组装、签名等操作均由交易生成池统一处理,不需要改动其它代码就能快速地对新布署的智能合约进行压测,从而可以快捷地增添测试用例,进行压力测试。
图14示意性示出了根据本公开的另一实施例的区块链网络的压力测试方法的流程图。图14实施例所述的区块链网络可以包括区块链节点,所述区块链节点可以包括第一区块链节点,所述方法可以由所述第一区块链节点执行。
如图14所示,本公开实施例提供的方法可以包括:
在S1410中,接收压测设备根据第一压力测试参数发送的第一压力测试交易,所述第一压力测试交易包括第一压测测试用例。
在S1420中,执行所述第一压力测试交易中的所述第一压测测试用例。
在S1430中,接收所述压测设备根据第二压力测试参数发送的第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,其中,所述第二压力测试参数是根据所述第一区块链节点的第一节点性能监控数据调整获得。
在S1440中,执行所述第二压力测试交易中的第二压测测试用例。
图14实施例中的其它内容可参照上述其它实施例。
图15示意性示出了根据本公开的一实施例的区块链网络的压力测试装置的框图。本公开实施例的区块链网络可以包括区块链节点,区块链节点可以包括第一区块链节点,区块链网络的压力测试装置1500可以设置于压测设备。
如图15所示,本公开实施例提供的区块链网络的压力测试装置1500可以包括:交易发送单元1510以及参数调整单元1520。
交易发送单元1510可以用于根据第一压力测试参数向所述第一区块链节点发送第一压力测试交易,所述第一压力测试交易包括第一压测测试用例,以便所述第一区块链节点执行所述第一压测测试用例。
参数调整单元1520可以用于根据所述第一区块链节点的第一节点性能监控数据调整所述第一压力测试参数,获得第二压力测试参数。
交易发送单元1510还可以用于根据所述第二压力测试参数向所述第一区块链节点发送第二压力测试交易,所述第二压力测试交易可以包括第二压测测试用例,以便所述第一区块链节点执行所述第二压测测试用例。
在示例性实施例中,参数调整单元1520可以包括:获取单元,可以用于获取初始压测请求发送速率和节点性能监控频率,所述第一压力测试参数包括所述初始压测请求发送速率,所述第二压力测试参数包括第二压测请求发送速率;所述获取单元还可以用于获取压测程序性能监控数据;所述获取单元还可以用于根据所述节点性能监控频率从所述第一区块链节点获得所述第一节点性能监控数据;所述获取单元还可以用于根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率。
在示例性实施例中,所述第一节点性能监控数据可以包括所述第一区块链节点的第一中央处理器使用率;所述压测程序性能监控数据可以包括所述压测设备的第二中央处理器使用率。
其中,所述获取单元可以包括:设置单元,可以用于若所述第一中央处理器使用率或者所述第二中央处理器使用率大于或等于中央处理器使用率阈值,则将所述第二压测请求发送速率设置为第一值。
在示例性实施例中,所述第一节点性能监控数据可以包括所述第一区块链节点的第一内存使用率;所述压测程序性能监控数据可以包括所述压测设备的第二内存使用率。
其中,所述设置单元可以用于:若所述第一内存使用率或者所述第二内存使用率大于或等于内存使用率阈值,则将所述第二压测请求发送速率设置为第二值。
在示例性实施例中,所述第一节点性能监控数据可以包括所述第一区块链节点的第一网络带宽使用率;所述压测程序性能监控数据可以包括压测设备的第二网络带宽使用率。
其中,所述设置单元可以用于:若所述第一网络带宽使用率或者所述第二网络带宽使用率大于或等于网络带宽使用率阈值,则将所述第二压测请求发送速率设置为第三值。
在示例性实施例中,所述区块链网络可以包括交易池,所述第一节点性能监控数据可以包括所述交易池中的待打包交易数。
其中,所述设置单元可以用于:若所述待打包交易数大于或等于交易池交易数阈值,则将所述第二压测请求发送速率设置为第四值。
在示例性实施例中,所述区块链网络可以包括第一交易队列,所述第一节点性能监控数据可以包括所述第一交易队列中的待验签交易数;
其中,所述设置单元可以用于:若所述待验签交易数大于或等于待验签交易阈值,则将所述第二压测请求发送速率设置为第五值。
在示例性实施例中,所述区块链网络可以包括交易池和第一交易队列,所述第一节点性能监控数据可以包括所述第一区块链节点的第一中央处理器使用率、第一内存使用率、第一网络带宽使用率、所述交易池中的待打包交易数以及所述第一交易队列中的待验签交易数;所述压测程序性能监控数据可以包括所述压测设备的第二中央处理器使用率、第二内存使用率、第二网络带宽使用率。所述获取单元可以包括:上调单元,可以用于若连续N次所述第一中央处理器使用率和所述第二中央处理器使用率均小于中央处理器使用率阈值,所述第一内存使用率和所述第二内存使用率均小于内存使用率阈值,所述第一网络带宽使用率和所述第二网络带宽使用率均小于网络带宽使用率阈值,所述待打包交易数小于交易池交易数阈值,且所述待验签交易数小于待验签交易阈值,则将所述初始压测请求发送速率上调第一百分比,作为所述第二压测请求发送速率;其中,N为大于1的正整数。
在示例性实施例中,所述区块链网络可以包括交易池和第一交易队列,所述第一节点性能监控数据可以包括所述第一区块链节点的第一中央处理器使用率、第一内存使用率、第一网络带宽使用率、所述交易池中的待打包交易数以及所述第一交易队列中的待验签交易数;所述压测程序性能监控数据可以包括所述压测设备的第二中央处理器使用率、第二内存使用率、第二网络带宽使用率。所述获取单元可以包括:下降单元,可以用于若连续N次出现以下至少一项:所述第一中央处理器使用率或者所述第二中央处理器使用率大于或等于中央处理器使用率阈值;所述第一内存使用率或者所述第二内存使用率大于或等于内存使用率阈值;所述第一网络带宽使用率或者所述第二网络带宽使用率大于或等于网络带宽使用率阈值;所述待验签交易数大于或等于待验签交易阈值;所述待验签交易数大于或等于待验签交易阈值,则将所述初始压测请求发送速率下降第二百分比,作为所述第二压测请求发送速率;其中,N为大于1的正整数。
在示例性实施例中,交易发送单元1510可以用于:从连接池中获取所述第一区块链节点与第一压测客户端的长连接;所述第一压测客户端从交易生成池的第二交易队列中获取所述第二压力测试交易;所述第一压测客户端通过所述第一区块链节点与所述第一压测客户端的长连接,按照所述第二压测请求发送速率向所述第一区块链节点发送所述第二压力测试交易。
在示例性实施例中,区块链网络的压力测试装置1500还可以包括:网络地址连接数获取单元,可以用于获取各区块链节点的网络地址和各区块链节点的连接数;长连接建立单元,可以用于根据各区块链节点的网络地址和各区块链节点的连接数,建立各区块链节点与各压测客户端的长连接,所述压测客户端包括所述第一压测客户端;长连接存储单元,可以用于将各区块链节点与各压测客户端的长连接存入所述连接池;其中,各区块链节点与各压测客户端的长连接包括所述第一区块链节点与所述第一压测客户端的长连接。
在示例性实施例中,区块链网络的压力测试装置1500还可以包括:用例名获得单元,可以用于获取待执行压测测试用例的用例名,并向用例列表发送所述待执行压测测试用例的用例名,所述用例列表中包括压测测试用例,每个压测测试用例具有合约名、合约参数、全局唯一的用例名和相同的用例接口;合约名获得单元,可以用于利用所述待执行压测测试用例的用例名对应的用例接口,从所述用例列表的压测测试用例中获取待执行压测测试用例及其合约名和合约参数;交易组装单元,可以用于将所述待执行压测测试用例及其合约名和合约参数组装成压力测试交易;交易签名单元,可以用于对组装的压力测试交易进行签名,获得签名后的压力测试交易;交易存储单元,可以用于将签名后的压力测试交易存入所述第二交易队列中;其中,所述第二交易队列中的签名后的压力测试交易包括所述第一压力测试交易和所述第二压力测试交易;所述待执行压测测试用例包括所述第一压测测试用例和所述第二压测测试用例。
本公开实施例的区块链网络的压力测试装置的其它内容可以参照上述实施例。
图16示意性示出了根据本公开的另一实施例的区块链网络的压力测试装置的框图。本公开实施例的区块链网络可以包括区块链节点,所述区块链节点可以包括第一区块链节点,区块链网络的压力测试装置1600可以设置于所述第一区块链节点。
如图16所示,区块链网络的压力测试装置1600可以包括:交易接收单元1610以及交易执行单元1620。
交易接收单元1610可以用于接收压测设备根据第一压力测试参数发送的第一压力测试交易,所述第一压力测试交易包括第一压测测试用例。
交易执行单元1620可以用于执行所述第一压力测试交易中的所述第一压测测试用例。
交易接收单元1610还可以用于接收所述压测设备根据第二压力测试参数发送的第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,其中,所述第二压力测试参数是根据所述第一区块链节点的第一节点性能监控数据调整获得。
交易执行单元1620还可以用于执行所述第二压力测试交易中的第二压测测试用例。
本公开实施例的区块链网络的压力测试装置的其它内容可以参照上述实施例。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
下面参考图17,其示出了适于用来实现本申请实施例的电子设备的结构示意图。图17示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
参照图17,本公开实施例提供的电子设备可以包括:处理器1701、通信接口1702、存储器1703和通信总线1704。
其中处理器1701、通信接口1702和存储器1703通过通信总线1704完成相互间的通信。
可选的,通信接口1702可以为通信模块的接口,如GSM(Global System forMobile communications,全球移动通信系统)模块的接口。处理器1701用于执行程序。存储器1703用于存放程序。程序可以包括计算机程序,该计算机程序包括计算机操作指令。其中,程序中可以包括:视频客户端的程序。
处理器1701可以是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本公开实施例的一个或多个集成电路。
存储器1703可以包含高速RAM(random access memory,随机存取存储器)存储器,也可以还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
其中,程序可具体用于:根据第一压力测试参数向所述第一区块链节点发送第一压力测试交易,所述第一压力测试交易包括第一压测测试用例,以便所述第一区块链节点执行所述第一压测测试用例;根据所述第一区块链节点的第一节点性能监控数据调整所述第一压力测试参数,获得第二压力测试参数;根据所述第二压力测试参数向所述第一区块链节点发送第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,以便所述第一区块链节点执行所述第二压测测试用例。
或者,程序可具体用于:接收压测设备根据第一压力测试参数发送的第一压力测试交易,所述第一压力测试交易包括第一压测测试用例;执行所述第一压力测试交易中的所述第一压测测试用例;接收所述压测设备根据第二压力测试参数发送的第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,其中,所述第二压力测试参数是根据所述第一区块链节点的第一节点性能监控数据调整获得;执行所述第二压力测试交易中的第二压测测试用例。
需要理解的是,在本公开附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (18)
1.一种区块链网络的压力测试方法,其特征在于,所述区块链网络包括区块链节点,所述区块链节点包括第一区块链节点,所述方法由压测设备执行;其中,所述方法包括:
根据第一压力测试参数向所述第一区块链节点发送第一压力测试交易,所述第一压力测试交易包括第一压测测试用例,以便所述第一区块链节点执行所述第一压测测试用例;
根据所述第一区块链节点的第一节点性能监控数据调整所述第一压力测试参数,获得第二压力测试参数;
根据所述第二压力测试参数向所述第一区块链节点发送第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,以便所述第一区块链节点执行所述第二压测测试用例。
2.根据权利要求1所述的方法,其特征在于,根据所述第一区块链节点的第一节点性能监控数据调整所述第一压力测试参数,获得第二压力测试参数,包括:
获取初始压测请求发送速率和节点性能监控频率,所述第一压力测试参数包括所述初始压测请求发送速率,所述第二压力测试参数包括第二压测请求发送速率;
获取压测程序性能监控数据;
根据所述节点性能监控频率从所述第一区块链节点获得所述第一节点性能监控数据;
根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率。
3.根据权利要求2所述的方法,其特征在于,所述第一节点性能监控数据包括所述第一区块链节点的第一中央处理器使用率;
所述压测程序性能监控数据包括所述压测设备的第二中央处理器使用率;
其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,包括:
若所述第一中央处理器使用率或者所述第二中央处理器使用率大于或等于中央处理器使用率阈值,则将所述第二压测请求发送速率设置为第一值。
4.根据权利要求2所述的方法,其特征在于,所述第一节点性能监控数据包括所述第一区块链节点的第一内存使用率;
所述压测程序性能监控数据包括所述压测设备的第二内存使用率;
其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,包括:
若所述第一内存使用率或者所述第二内存使用率大于或等于内存使用率阈值,则将所述第二压测请求发送速率设置为第二值。
5.根据权利要求2所述的方法,其特征在于,所述第一节点性能监控数据包括所述第一区块链节点的第一网络带宽使用率;
所述压测程序性能监控数据包括压测设备的第二网络带宽使用率;
其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,包括:
若所述第一网络带宽使用率或者所述第二网络带宽使用率大于或等于网络带宽使用率阈值,则将所述第二压测请求发送速率设置为第三值。
6.根据权利要求2所述的方法,其特征在于,所述区块链网络包括交易池,所述第一节点性能监控数据包括所述交易池中的待打包交易数;
其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,包括:
若所述待打包交易数大于或等于交易池交易数阈值,则将所述第二压测请求发送速率设置为第四值。
7.根据权利要求2所述的方法,其特征在于,所述区块链网络包括第一交易队列,所述第一节点性能监控数据包括所述第一交易队列中的待验签交易数;
其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,包括:
若所述待验签交易数大于或等于待验签交易阈值,则将所述第二压测请求发送速率设置为第五值。
8.根据权利要求2所述的方法,其特征在于,所述区块链网络包括交易池和第一交易队列,所述第一节点性能监控数据包括所述第一区块链节点的第一中央处理器使用率、第一内存使用率、第一网络带宽使用率、所述交易池中的待打包交易数以及所述第一交易队列中的待验签交易数;
所述压测程序性能监控数据包括所述压测设备的第二中央处理器使用率、第二内存使用率、第二网络带宽使用率;
其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,包括:
若连续N次所述第一中央处理器使用率和所述第二中央处理器使用率均小于中央处理器使用率阈值,所述第一内存使用率和所述第二内存使用率均小于内存使用率阈值,所述第一网络带宽使用率和所述第二网络带宽使用率均小于网络带宽使用率阈值,所述待打包交易数小于交易池交易数阈值,且所述待验签交易数小于待验签交易阈值,则将所述初始压测请求发送速率上调第一百分比,作为所述第二压测请求发送速率;
其中,N为大于1的正整数。
9.根据权利要求2所述的方法,其特征在于,所述区块链网络包括交易池和第一交易队列,所述第一节点性能监控数据包括所述第一区块链节点的第一中央处理器使用率、第一内存使用率、第一网络带宽使用率、所述交易池中的待打包交易数以及所述第一交易队列中的待验签交易数;
所述压测程序性能监控数据包括所述压测设备的第二中央处理器使用率、第二内存使用率、第二网络带宽使用率;
其中,根据所述压测程序性能监控数据和所述第一节点性能监控数据调整所述初始压测请求发送速率,获得所述第二压测请求发送速率,包括:
若连续N次出现以下至少一项:所述第一中央处理器使用率或者所述第二中央处理器使用率大于或等于中央处理器使用率阈值;所述第一内存使用率或者所述第二内存使用率大于或等于内存使用率阈值;所述第一网络带宽使用率或者所述第二网络带宽使用率大于或等于网络带宽使用率阈值;所述待验签交易数大于或等于待验签交易阈值;所述待验签交易数大于或等于待验签交易阈值,则将所述初始压测请求发送速率下降第二百分比,作为所述第二压测请求发送速率;
其中,N为大于1的正整数。
10.根据权利要求2所述的方法,其特征在于,根据所述第二压力测试参数向所述第一区块链节点发送第二压力测试交易,包括:
从连接池中获取所述第一区块链节点与第一压测客户端的长连接;
所述第一压测客户端从交易生成池的第二交易队列中获取所述第二压力测试交易;
所述第一压测客户端通过所述第一区块链节点与所述第一压测客户端的长连接,按照所述第二压测请求发送速率向所述第一区块链节点发送所述第二压力测试交易。
11.根据权利要求10所述的方法,其特征在于,还包括:
获取各区块链节点的网络地址和各区块链节点的连接数;
根据各区块链节点的网络地址和各区块链节点的连接数,建立各区块链节点与各压测客户端的长连接,所述压测客户端包括所述第一压测客户端;
将各区块链节点与各压测客户端的长连接存入所述连接池;
其中,各区块链节点与各压测客户端的长连接包括所述第一区块链节点与所述第一压测客户端的长连接。
12.根据权利要求10所述的方法,其特征在于,还包括:
获取待执行压测测试用例的用例名,并向用例列表发送所述待执行压测测试用例的用例名,所述用例列表中包括压测测试用例,每个压测测试用例具有合约名、合约参数、全局唯一的用例名和相同的用例接口;
利用所述待执行压测测试用例的用例名对应的用例接口,从所述用例列表的压测测试用例中获取待执行压测测试用例及其合约名和合约参数;
将所述待执行压测测试用例及其合约名和合约参数组装成压力测试交易;
对组装的压力测试交易进行签名,获得签名后的压力测试交易;
将签名后的压力测试交易存入所述第二交易队列中;
其中,所述第二交易队列中的签名后的压力测试交易包括所述第一压力测试交易和所述第二压力测试交易;所述待执行压测测试用例包括所述第一压测测试用例和所述第二压测测试用例。
13.一种区块链网络的压力测试方法,其特征在于,所述区块链网络包括区块链节点,所述区块链节点包括第一区块链节点,所述方法由所述第一区块链节点执行;其中,所述方法包括:
接收压测设备根据第一压力测试参数发送的第一压力测试交易,所述第一压力测试交易包括第一压测测试用例;
执行所述第一压力测试交易中的所述第一压测测试用例;
接收所述压测设备根据第二压力测试参数发送的第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,其中,所述第二压力测试参数是根据所述第一区块链节点的第一节点性能监控数据调整获得;
执行所述第二压力测试交易中的第二压测测试用例。
14.一种区块链网络的压力测试装置,其特征在于,所述区块链网络包括区块链节点,所述区块链节点包括第一区块链节点,所述装置设置于压测设备;其中,所述装置包括:
交易发送单元,用于根据第一压力测试参数向所述第一区块链节点发送第一压力测试交易,所述第一压力测试交易包括第一压测测试用例,以便所述第一区块链节点执行所述第一压测测试用例;
参数调整单元,用于根据所述第一区块链节点的第一节点性能监控数据调整所述第一压力测试参数,获得第二压力测试参数;
所述交易发送单元还用于根据所述第二压力测试参数向所述第一区块链节点发送第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,以便所述第一区块链节点执行所述第二压测测试用例。
15.一种区块链网络的压力测试装置,其特征在于,所述区块链网络包括区块链节点,所述区块链节点包括第一区块链节点,所述装置设置于所述第一区块链节点;其中,所述装置包括:
交易接收单元,用于接收压测设备根据第一压力测试参数发送的第一压力测试交易,所述第一压力测试交易包括第一压测测试用例;
交易执行单元,用于执行所述第一压力测试交易中的所述第一压测测试用例;
所述交易接收单元还用于接收所述压测设备根据第二压力测试参数发送的第二压力测试交易,所述第二压力测试交易包括第二压测测试用例,其中,所述第二压力测试参数是根据所述第一区块链节点的第一节点性能监控数据调整获得;
所述交易执行单元还用于执行所述第二压力测试交易中的第二压测测试用例。
16.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1至12中任一项所述的方法或者如权利要求13所述的方法。
17.一种电子设备,其特征在于,包括:
至少一个处理器;
存储装置,配置为存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如权利要求1至12中任一项所述的方法或者如权利要求13所述的方法。
18.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法;或者,
如权利要求13所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111205595.0A CN115987858A (zh) | 2021-10-15 | 2021-10-15 | 区块链网络的压力测试方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111205595.0A CN115987858A (zh) | 2021-10-15 | 2021-10-15 | 区块链网络的压力测试方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115987858A true CN115987858A (zh) | 2023-04-18 |
Family
ID=85956798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111205595.0A Pending CN115987858A (zh) | 2021-10-15 | 2021-10-15 | 区块链网络的压力测试方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115987858A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909931A (zh) * | 2023-09-12 | 2023-10-20 | 广州民航信息技术有限公司 | 一种针对Fabric区块链的性能检测系统 |
-
2021
- 2021-10-15 CN CN202111205595.0A patent/CN115987858A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909931A (zh) * | 2023-09-12 | 2023-10-20 | 广州民航信息技术有限公司 | 一种针对Fabric区块链的性能检测系统 |
CN116909931B (zh) * | 2023-09-12 | 2023-12-26 | 广州民航信息技术有限公司 | 一种针对Fabric区块链的性能检测系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10764034B2 (en) | Method and system for facilitating data transfer between blockchains | |
US6397359B1 (en) | Methods, systems and computer program products for scheduled network performance testing | |
CN112073269B (zh) | 区块链网络测试方法、装置、服务器及存储介质 | |
CN106470133B (zh) | 系统压力测试方法及装置 | |
US20060074946A1 (en) | Point of view distributed agent methodology for network management | |
US10693654B2 (en) | Method and system for hosting a new blockchain using an existing blockchain node | |
US10216608B1 (en) | Load testing with automated service dependency discovery | |
US20090064324A1 (en) | Non-intrusive monitoring of services in a service-oriented architecture | |
CN111949531B (zh) | 区块链网络的测试方法、装置、介质及电子设备 | |
US20200201681A1 (en) | Method and system for virtualizing blockchains | |
CN110705893B (zh) | 一种业务节点管理方法、装置、设备以及存储介质 | |
CN111585840A (zh) | 服务资源监测方法、装置和设备 | |
CN115439249B (zh) | 一种跨区块链的业务服务实现方法、装置和系统 | |
CN111563124B (zh) | 基于区块链的作业处理方法、装置及系统 | |
WO2023020242A1 (zh) | 基于区块链的数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 | |
CN115987858A (zh) | 区块链网络的压力测试方法及相关设备 | |
CN110908910A (zh) | 一种基于区块链的测试监控方法、装置及可读存储介质 | |
CN110633191B (zh) | 实时监控软件系统业务健康度的方法和系统 | |
CN112202647A (zh) | 区块链网络中的测试方法、装置及测试设备 | |
CN115469975A (zh) | 容器资源调整方法、装置、电子设备及存储介质 | |
Nystrøm | Network Performance in Hyperledger Fabric-Investigating the network resource consumption of transactions in a Distributed Ledger Technology system | |
WO2019200461A1 (en) | Method and system for performing an action requested by a blockchain | |
CN113010337B (zh) | 故障检测方法、总控节点、工作节点及分布式系统 | |
CN115168489B (zh) | 基于区块链的数据存证方法和装置 | |
An et al. | Research on Byzantine Fault Tolerant algorithm based on Node Weights |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40083186 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |