论文部分内容阅读
随着Web技术的发展,越来越多的信息系统使用流行的B/S结构进行架构和开发。Web应用的开放性和流行性使得很多Web系统面临大量并发用户的使用,系统的可靠性和性能问题也随之出现。因此Web系统都必须通过负载测试来保证系统能够在高负载下满足用户的功能性和非功能性需求。在竞争日益激烈的市场环境下,Web应用需要以更加快速敏捷的方式更新发布来适应市场需求。尽管目前的负载测试工具和方法能够一定程度上解决部分Web应用的性能问题,但是其自动化程度依旧不高,无法满足敏捷模式等对时间的要求非常高的场景。本文从Web应用负载测试的负载建模开始,对Web负载测试的一些关键性技术进行了研究,提出了一系列可以显著提升Web应用负载测试效率的技术和框架。 本研究根据Web应用负载的共性特征,提出了基于上下文的顺序操作模型(CBSAM)和负载参数说明语言(WPSL)来建模Web应用负载。本文提出的CBSAM模型和负载参数描述语言就是一种易理解、易维护的Web系统负载表达方式。基于CBSAM和WPSL,我们还实现了支持可视化负载建模的负载测试工具LTF。LTF通过支持负载模型的图形化表示和编辑,不仅提升了Web负载模型的真实性和可维护性,还提升了负载测试的效率。负载测试脚本和场景生成:负载测试过程中的脚本和场景的编辑和维护需要花费大量时间。云环境中的Web服务使用标准服务定义,为测试脚本和场景的自动化生成提供了可能。提出针对云环境中Web服务的测试脚本和测试场景自动化生成方法,并研发了针对云服务的负载测试框架CLTF。CLTF以Web服务接口定义文件作为输入,基于脚本模版生成Web服务的负载测试脚本。CLTF以CBSAM作为负载模型,把自动生成的Web服务负载测试脚本组织成所需的测试场景。CLTF在脚本和场景生成两个方面的自动化,大大提高了云环境中Web服务的负载测试效率,并有效地帮助1000多个云上的Web服务进行快速地负载测试。性能问题根源和影响分析:在不断的版本迭代中,Web应用中的代码变更可能会带来性能风险。通过负载测试可以发现有性能问题的Web服务,但是在诸多代码中找到性能问题根源并分析修改可能带来的影响是一项艰难的任务。利用在负载测试过程中服务端产生的代码执行性能日志,提出一种创新的方法来分析性能问题的根源以及其影响程度。首先,服务端日志被用来逆向分析每个业务代码的运行时调用树。然后,以Web服务作为区分,将不同的调用树进行整合和统计,为每个Web服务得到一棵合并后的调用树来描述某个业务执行过程的调用树。对于调用树上的每一个方法,本文定义了一个距离指标来表示所有方法是性能问题根源的可能性。根据这个距离指标的排序结果可以帮助性能工程师快速地定位性能问题根源。另外,为了分析每个方法对其它业务的性能影响程度,本文采用了方法到业务的倒排索引来进行修改影响分析。本文提出的方法可以帮助性能工程师快速地对性能问题的根源和修改影响进行分析。