论文部分内容阅读
消息队列中间件是用来进行消息发布、订阅以及管理的部件,在电子商务等领域起着非常重要的作用。它解决了传统的客户/服务端消息处理流程无法适应大吞吐量场景的问题,并提供解耦、消息缓存以及持久化等功能满足不同业务场景的需求。目前公司内也在研发消息队列中间件JetMQ,但消息中间件并未完全实现统一的标准,没有通用的性能测试工具可用,而公司部门内现有的测试方法存在过程繁琐、易出错、测试周期较长等问题。为此,本文设计并实现了消息队列中间件性能测试工具。本文对消息队列中间件及其性能测试进行了深入的研究,在此基础上设计实现了工具的测试功能。性能测试采用负载测试的方式,检测中间件在特定负载下的执行性能。负载测试与性能指标计算的执行代码由Java编写,封装后通过Shell脚本进行调用。中间件服务器节点资源数据的采集使用Linux平台的free和sar性能工具,并通过expect脚本对获取的数据进行汇总整理,实现了性能测试的自动化。针对部门现有测试方法存在的问题,本文给出相应的解决方案。在测试方法方面,现有测试代码的执行依托Web工程,部署过程复杂且难度较大。本文参考主流中间件Kafka的测试方法,使用Shell脚本实现工具的整体功能,使工具能够直接在Linux系统运行,省去部署的步骤。测试流程控制方面,目前的测试流程通过消息数量控制,且不产生过程数据,在测试准度和灵活性上有所欠缺。本文在对测试流程深入分析的基础上,改进现有方法,按执行时间进行流程控制;通过多线程技术提高单个客户端所能提供的测试负载;使用共享变量对整体的测试数据进行统计,并利用定时任务计算各时段平均的性能数据,使测试更加准确灵活。相比公司现有的消息中间件测试方法,本文实现的测试工具大幅缩短了测试时间,降低了测试的难度,提高了工作效率。经测试,本工具设计合理,功能方面满足了预期需求;根据工具测得的性能指标数据计算出的消息处理量预估值与实际值的偏差约为千分之一,测试结果较为准确;单服务器节点的测试时间缩短至原先的15%,多服务器节点的测试时间缩短至原先的10%,同时能对测试数据自动整理归档,是一套切实可行的消息队列中间件性能测试工具。