http://developer.51cto.com/art/200811/98826_1.htm
已存在应用
已存在应用跟一个全新应用相比,一个明显的优点是:真实的用户行为可以在实际生产环境中观察获得。根据请求的本质和它们如何被应用定义,可以通过两个选择定义最终用户行为:
● 访问日志
● 最终用户体验监视器
对于大多数基于web的应用来说,访问日志提供了足够的资源分析服务请求的本质和它们的均衡关系。Web服务器可以配置成抓取最终用户请求信息并存储在一 个日志文件中,称之为“访问日志”(因为该文件通常命名为“access.log”)。使用访问日志定位用户行为的关键是应用交互需要能够通过不同的 URI来区分。例如,如果之前例子的动作采用类似“/login.do”、“/processClaim.do”、“/logout.do”的URI,那 么我们可以非常容易的在访问日志中发现这些行为并确定它们的比例。更进一步,通过最频繁的URI来排序访问日志可以快速发现占比例前n%的的若干请求,这 个“n”%应该在80%左右。
访问日志是文本文件,可以手动检查(不是一个很有效率的任务),可以通过编程解析,也可以通过工具来分析。对此有很多商业解决方案,不过Quest Software有一个产品Funnel Web Analyzer,虽然多年以前已经终止开发,但是由于其很受欢迎的命令,公司就作为将其作为自由软件重新发布。Funnel Web Analyzer可以分析大多数访问日志并显示用于创建合适负载测试的信息。
一些应用不像上面提到的那样简单,其用户交互无法很容易的通过一个URI来定位。例如,考虑一个包含前端控制器servlet的应用,该servlet接受一个XML有效信息——并且其业务处理逻辑就存在于该信息中。在本例中,需要另外的工具来侦测其有效信息以判断其符合哪个业务场景。这可以通过使用 servlet过滤器或者一个称为最终用户体验监视器的硬件设备来完成。
不管用户行为是如何获得的,它都是开始任何性能调优实践之前的关键先决条件。
全新应用
由于全新的应用没有任何最终用户行为可以分析,所以对我们提出了一个独特的挑战。定位新应用的用户行为需要三个步骤,如图1所示。
图 1 评估新应用的最终用户行为
第一步,评估最终用户应该会做什么。这步是“猜一猜”的正式说法,但应该是一个经过培训的猜测过程。评估结果应该来自于以下双方的讨论:应用业务负责人和应用技术负责人。应用业务负责人,通常是一个产品经理,负责细化最终用户应该如何使用该应用程序——例如,他可能报告说最终用户会登陆、处理五个索赔请求、过期、处理五个索赔请求、生成两个报告、然后注销。应用技术负责人,一般是架构师或是技术lead,负责把业务交互的抽象列表翻译成用于生成负载测试的技术步骤——例如,他可能报告说登陆通过“/login.do” URI完成而处理一个索赔请求需要五个URI.这些人(或者小组或者一些大型项目里的委员会)应该一起提供足够的信息来建立一个基准负载测试。
我们建立负载测试,用其调整应用和容器,应用程序部署到生产环境中,这一切做完之后,调优工作并没有结束。下一步是验证负载测试集。这通常是一个多阶段的活动:
● 冒烟测试验证:在实际运行的一两周之内验证原先的评估值是否符合真正生产环境下最终用户的行为。这步验证是为了确认在评估过程中没有明显的错误。
● 生产验证:一些应用需要用户花时间才能形成统一的使用方式。这个适应的时间长短因应用而异,可能是一个月或者一个季度,不过一旦用户的行为稳定下来,就需要验证最终用户行为是否与评估一致。
● 回归验证:最好在应用的生产周期中阶段性的验证用户行为,以防止用户行为改变或者引入新的功能或工作流导致用户行为改变。
最后一步,也是经常被忽视的一步,就是反思。根据实际用户行为来反思评估的精确性是很重要的,因为只有通过反思,用户行为才能更便于理解,评估在以后的应用中才能得到提高。没有反思,相同的错误会一犯再犯,最终会增加调优的工作量。