我的任务是为我们在 Weblogic 服务器上运行的一个 Java 应用程序寻找性能测试解决方案。要求是记录生产请求(包括 POST 数据的 GET 和 POST),然后使用生产数据库的副本在性能测试环境中运行这些请求。
使用生产请求而不是测试脚本的原因是:
- 这是一个没有现有测试脚本的大型应用程序,因此编写脚本以覆盖整个应用程序将是大量工作。
- 某些性能问题仅在用户按特定顺序执行多个操作时才会出现。
- 使用与系统的实际用户交互进行测试,而不是估计用户如何与系统交互。我们都知道用户会做我们没有想到的事情。
- 我希望能够在发布到生产环境之前修复性能问题并针对固定代码重新运行请求。
我已经研究过将JMeters 访问日志采样器与服务器访问日志一起使用,但是访问日志不包含 POST 数据,并且访问日志采样器仅查看请求 URL,因此它无法模拟用户提交表单数据。
我还研究过使用 JMeter HTTP 代理服务器,但是这只能记录一个用户的操作,并且需要用户配置他们的浏览器以使用代理。Tsung 和 The Grinder 也存在同样的限制。
我已经研究过使用 Wireshark 和 TCReplay,但是在数据包级别记录过多,并且不会在请求级别提供任何有用的报告。
考虑到我需要能够在发布到生产环境之前测试修复程序,是否有更好的方法来分析生产性能?