2009-11-11 98 views
2

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

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

  1. 它与任何现有的测试脚本的大型应用程序,这将是AA大量的工作,写剧本,以覆盖整个应用。
  2. 仅当用户按特定顺序执行多个操作时,才会显示一些性能问题。
  3. 要使用实际的用户与系统的交互进行测试,而不是估计用户如何与系统进行交互。我们都知道用户会做我们没有想到的事情。
  4. 我希望能够解决性能问题,并在发布到生产之前针对固定代码重新运行请求。

我已经看过用JMeters Access Log Sampler与服务器的访问日志,不过访问日志不包含POST数据和访问日志采样只着眼于请求的URL,因此它不能模拟用户提交表单数据。

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

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

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

回答

0

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

可以查看日志并收集关于通过您的应用程序的某些路径可能性的信息。然后,您可以查看生产数据库,查看任何帖子请求中输入的可能值。从那里你将不得不进行负荷测试,以接近您的生产场地的使用模式。

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

可能会改变您的网络应用程序,以便记录和记录每个请求并发布会话和日期时间。这个自定义日志记录可以用来针对测试网站生成负载测试请求。这将对您的现有网站进行一些严重的代码更改,并可能会对性能产生影响。这就是说,我已经与使用这种级别的日志记录的Web应用程序一起工作,并且能够分析导致错误的确切系列的页面帖子/请求对开发人员来说非常有价值。

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

+0

感谢您的回答。我认为最好的选择是使用Weblogic servlet过滤器。这使我可以访问ServletRequest对象,然后我可以取出POST数据和其他细节并将它们写入日志。然后,我可以使用日志数据作为应用程序的输入。这会对性能产生影响。幸运的是,它只需要运行一小段时间就可以获得生产交互的样本。 – JosephL 2009-11-18 22:29:35

0

请老实说看看这个白皮书由动力技术在本页面.. http://www.impetus.com/plabs/sandstorm.html

+0

白皮书记录部分 “脚本记录使用沙尘暴的录音工具进行处理,将记录工具是捕获真正的客户端应用程序和服务器之间的通信的代理服务器。后在录制过程中,会生成一个测试脚本,稍后可以将其分配给虚拟用户。“ 这听起来与JMeter HHTP代理服务器在同一个用户操作下完全相同。我的要求是从所有用户捕获到服务器的流量。 – JosephL 2009-11-16 20:32:56

0

,我不知道你被要求做任务,甚至有可能,更何况是一个好主意。根据应用程序后端的复杂程度,以及如何完善可以重新创建状态(即:一直到外部SOA服务或时间/时钟),可能无法使GET和POST请求重现相同行为。

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

祝你好运!

0

我建议以下,以获得生产要求和模拟准确工作量:

1)使用Coremetrics公司:与CoreMetrics提供使用,你可以知道应用程序的使用模式这样的解决方案。这将有助于提出一个精确的工作量模型。然后可以将此模型转换为测试脚本,并针对生产数据库的蒙版副本执行。这将实时为您提供有关应用程序性能的准确结果。

2)另一种选择是使用AOP(Aspect oriented apporach)创建一个小型实用程序,以便它可以跟踪所有请求和相应的方法跟踪。这将有助于识别生产使用模式并进而精确模拟工作负载。可以使用AspectJ等AOP框架。这不需要对代码进行任何更改。仪器可以在飞行中完成。另一个好处是只能在特定的时间窗口启用thi cna,然后才能关闭它。

问候, batterywalam