我的任务是为在Weblogic服务器上运行的Java应用程序之一寻找性能测试解决方案。要求是记录生产请求(包括POST数据的GET和POST),然后在性能测试环境中使用生产数据库的副本运行这些请求。
使用生产请求而不是测试脚本的原因是:
我已经看过将JMeters Access Log Sampler与服务器访问日志一起使用,但是访问日志不包含POST数据,访问日志采样器只查看请求URL,因此无法模拟提交表单数据的用户。
我还查看了使用JMeter HTTP代理服务器,但是这可以记录只有一个用户的操作,并要求用户配置他们的浏览器以使用代理。 Tsung和The Grinder也存在同样的限制。
我已经看过使用Wireshark和TCReplay,但是在数据包级别进行录制过多,并且不会在请求级别提供任何有用的报告。
考虑到我需要能够在发布到生产之前测试修复程序,是否有更好的方法来分析生产性能?
答案 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