Performance 访问负载测试的日志重播?Jmeter陷阱与竞争对手

Performance 访问负载测试的日志重播?Jmeter陷阱与竞争对手,performance,jmeter,load-testing,performance-testing,Performance,Jmeter,Load Testing,Performance Testing,上下文 我们希望使用“重播”web服务器访问日志来生成负载测试。当我最近阅读关于在云中使用JMeter的博客文章时,我想到了JMeter(例如,启动许多AmazonEC2实例来生成负载) 多年来,我一直听说JMeter能够重放访问日志,但在回顾这一特性时,我发现了以下几点 是否: 重新创建会话,即处理jsessionId令牌(尽管它试图通过IP地址近似会话) 不: 处理POST数据(即使您可以配置apache/tomcat将POST数据写入访问日志,jmeter访问日志采样器也只处理“

上下文

我们希望使用“重播”web服务器访问日志来生成负载测试。当我最近阅读关于在云中使用JMeter的博客文章时,我想到了JMeter(例如,启动许多AmazonEC2实例来生成负载)

多年来,我一直听说JMeter能够重放访问日志,但在回顾这一特性时,我发现了以下几点

  • 是否:

    • 重新创建会话,即处理
      jsessionId
      令牌(尽管它试图通过IP地址近似会话)
  • 不:

    • 处理POST数据(即使您可以配置apache/tomcat将POST数据写入访问日志,jmeter访问日志采样器也只处理“公共”日志格式)
Post数据将大大有助于重新创建实际负载

此外,文档还将Access Log Sampler描述为“alpha代码”,即使它已经使用了8年。它似乎没有得到积极的维护。(这比Gmail的测试版还要长。)

HttpPerf

另一篇博文将我指向httpperf工具。我已经开始读到:

  • 博客:
  • httpperf:
摘要

  • 从真实用户数据生成负载测试“脚本”的最佳方法是什么
  • 什么对你最有效
  • 各种工具的利弊

JMeter+httpraw-Request+Raw-Data-sourceforme运行良好

我将介绍如何使用我们自己的名为 它可以处理简单的access.log,但也只能处理“GET”请求。当需要发出其他类型的请求时,我们使用其他ammo格式(ammo是一个包含我们将发送到服务器的所有请求的文件)。例如:

342
POST / HTTP/1.1^M
Host: xxx.xxx.xxx.xxx:8080^M
Connection: keep-alive^M
Keep-Alive: 300^M
Content-Type: multipart/form-data; boundary=AGHTUNG^M
Content-Length: 1400^M
Connection: Close^M
^M
--AGHTUNG^M
Content-Disposition: form-data; name="fp"; filename="fp_tank"^M
Content-Type: application/octet-stream^M
Content-Transfer-Encoding: binary^M
...
--AGHTUNG--^M
第一行的数字('342')是以下请求的大小。请求是原始格式的。您可以用自己喜欢的语言编写一个简单的脚本,从access.log生成这样的ammo文件,然后将其用于负载测试


这种弹药格式使它非常灵活。例如,代码从FCGI日志生成弹药(POST主体在Base64中编码)。但另一方面,您需要手动处理会话。

您可以使用POST数据轻松重放访问日志。它有许多类似于JMeter的插件,还能够添加内联脚本,使用这些脚本,您可以轻松地从访问日志中定位POST负载、URL、时间戳等。您可以直接从该工具本地运行负载测试,或将录制的脚本复制到以运行大量百万虚拟用户负载测试。我无法让JMeter执行此操作。问题是,在访问日志中转储post数据的配置是什么。面对同样的问题,我找不到简单的方法来做这件事。我试图从apache服务器播放日志,但注意到我需要配置日志正文和cookie。你能分享你的apache配置吗?+1@andrey pokhilko你能在回答中添加更多细节吗?您是从哪里获得HTTP原始请求的?我无法将apache配置为记录post请求数据。“原始数据源”是什么意思?原始数据源是JMeter的插件。但这些天我不推荐使用它,还有其他可能的方法,比如BlazeMeter Taurus工具。是的,使用Apache获取请求后主体并不是一个简单的方法。