论文部分内容阅读
压力测试是检验Web应用QOS(Quality of Service)的一种重要方法,测试所需的高并发请求需要借助计算机程序来生成。随着云计算时代的到来,后端服务器的性能得到空前的提升,传统的负载生成方案已经越来越不能满足现代云端服务器压力测试的需求。已有的负载生成方案中,多线程负载生成法由于技术成熟且稳定性好,被大多数商业和开源系统所采用。然而这种每个线程管理一个连接的方式在并发连接数很高时,会因为频繁的线程上下文切换而导致性能急剧恶化。另一类基于异步I/O的负载生成方法虽然能够高效地产生大量负载,但是这种方案通常只使用了单个线程处理所有连接而没能充分发挥多核CPU的处理能力。使用多核优化异步I/O负载生成的设想虽然已经存在,但是缺少完整的工程实践和有效性证明。另一方面,现代压力测试系统的垂直扩展能力的重要性也与日俱增,如何提高系统的可扩展性也是当前该领域研究的重要课题。本文首先梳理了前人工作中与压力测试系统以及负载生成系统相关的研究,分析总结了已有解决方案的基本原理以及研究结论,归纳出已有的工作中存在的不足以及缺陷。在这样的基础和背景下,本文提出了基于MPI技术的负载生成系统PBench的设计和实现。PBench在使用事件驱动式的异步I/O负载生成技术的基础上,利用MPI并行处理技术在多核以及分布式环境下实现任务级并行。充分发挥多核CPU的性能,提高单个计算节点负载生成的能力,同时也使得系统具备了很强的垂直扩展能力,能够方便地实现集群化。本文详细地介绍了PBench的设计思想以及所用到的关键技术,讲述了PBench的设计要点和实现方式,并通过详尽的实验来证明PBench这种并行化设计确实能够充分发挥多核CPU的处理能力,提高单机负载生成的效率。