使用生产数据的瓶颈性能测试应用程序

时间:2009-11-11 21:42:02

标签: performance testing webserver weblogic load-testing

我的任务是为在Weblogic服务器上运行的Java应用程序之一寻找性能测试解决方案。要求是记录生产请求(包括POST数据的GET和POST),然后在性能测试环境中使用生产数据库的副本运行这些请求。

使用生产请求而不是测试脚本的原因是:

  1. 这是一个没有现有测试脚本的大型应用程序,因此编写脚本以覆盖整个应用程序需要做大量的工作。
  2. 仅当用户按特定顺序执行多项操作时,才会显示某些性能问题。
  3. 使用与系统的实际用户交互来测试,而不是估计用户如何与系统交互。我们都知道用户会做我们没有想过的事情。
  4. 我希望能够解决性能问题,并在发布到生产环境之前重新运行针对固定代码的请求。
  5. 我已经看过将JMeters Access Log Sampler与服务器访问日志一起使用,但是访问日志不包含POST数据,访问日志采样器只查看请求URL,因此无法模拟提交表单数据的用户。

    我还查看了使用JMeter HTTP代理服务器,但是这可以记录只有一个用户的操作,并要求用户配置他们的浏览器以使用代理。 Tsung和The Grinder也存在同样的限制。

    我已经看过使用Wireshark和TCReplay,但是在数据包级别进行录制过多,并且不会在请求级别提供任何有用的报告。

    考虑到我需要能够在发布到生产之前测试修复程序,是否有更好的方法来分析生产性能?

4 个答案:

答案 0 :(得分:0)

请在此页面上查看Impetus Technologies的白皮书。http://www.impetus.com/plabs/sandstorm.html

答案 1 :(得分:0)

老实说,我不确定你被要求做的任务是否可能,更不用说一个好主意了。根据应用程序后端的复杂程度,以及重建状态的完美程度(即:一直到外部SOA服务或时间/时钟),可能无法使这些GET和POST请求重现相同行为。

也就是说,针对生产数据的性能测试总是很好,但它通常需要特定于应用程序的知识来强调所述数据。简单地重复HTTP GET和POST几乎肯定不会产生有用的结果。

祝你好运!

答案 2 :(得分:0)

这将是一个很难的问题。我使用Visual Studio Test Edition来加载测试我的应用程序,我们只能“估计”网站上的用户活动。

可以查看日志并通过您的应用收集有关某些路径可能性的信息。然后,您可以查看生产数据库以查看在任何发布请求中输入的可能值。因此,您必须进行负载测试,以接近生产站点的使用模式。

对于任何当前的工具,我认为不可能记录和回放实际的用户交互。

可以改变您的网络应用程序,以便记录并记录每个请求并针对会话和日期时间发布。然后,可以使用此自定义日志记录生成针对测试网站的负载测试请求。这将对您现有的网站进行一些严格的代码更改,并可能会对性能产生影响。

也就是说,我使用过这种级别的日志记录的Web应用程序,并且能够分析导致错误的确切系列的页面帖子/请求对于开发人员来说非常有价值。

总结:这是可能的,但我还没有听说过任何现成的工具。

答案 3 :(得分:0)

我建议以下内容来获取生产请求并模拟准确的工作量:

1)使用coremetrics:CoreMetrics提供了这样的解决方案,您可以使用它们了解应用程序使用模式。这有助于提出准确的工作负载模型。然后,可以将此模型转换为测试脚本,并针对生产数据库的掩码副本执行。这将为您提供有关应用程序实时性能的准确结果。

2)另一种选择是使用AOP(面向方面​​的apporach)创建一个小实用程序,以便它可以跟踪所有请求和相应的方法跟踪。这有助于确定生产使用模式,进而准确模拟工作量。可以使用诸如AspectJ的AOP框架。这不需要对代码进行任何更改。仪器可以在运行中完成。另一个好处是,只有在特定的时间窗口启用它才能关闭它。

此致 batterywalam