如何在服务器上重播Apache访问日志以进行实际负载测试?


Answers:


14

您可以使用Jmeter的Access Log Sampler组件。

本PDF中有一个简短的教程。


3
我尝试了这个,显然我必须是个笨蛋,因为我无法使其正常工作。我最终在insom.me.uk/z/2009/02/…中
Stewart Robinson

由于原始链接已失效,因此这里是archive.org中的链接:web.archive.org/web/20090305084634/https
//www.insom.me.uk/…–杨致远

好的,以防万一其他人找到了该脚本,该脚本存在线程问题。一个人可能需要threadthreadinglib 替换lib (stackoverflow.com/questions/19558401/…
杨致远

1

假设访问日志中只有GET请求,并且您不介意在日志的时间戳分辨率限制下聚集请求,那么大约10行$ SCRIPTING_LANGUAGE应该可以解决问题。POST,Cookie,HTTP身份验证以及更微妙的时间安排是一个非常有趣的练习。



-2

我会做一些不同的事情。我确实理解您的问题,但是如果您打算加载服务器,则可能需要使用“ ab”工具。它与apache的大多数安装一起提供。运行:

ab -c 15 -n 1000 http://site.name/

将执行1000个请求,一次执行15个请求。我知道这并不是您要寻找的,这只会查询您提供的一个地址。如果需要负载,这是一种快速且简单的方法,它将为您提供一些潜在的非常有用的统计信息,以进行调试。


如果问题说“我有一个AB测试无法重现的错误”,您为什么建议使用AB?
womble

我错过了工具中列出的AB。:p我很想说这是编辑,但老实说我不确定自己。
TrueDuality

-2

你为什么不发展自己的?获取日志;解析它。获取URI。拨打电话。您可以用php编写并在apache中运行以实现并发。

如果您的日志是gz格式,请执行zcat,使用readlog工具。那将给出URL。现在使用phpCurl来访问URL。为了获得更高的吞吐量,请在apache中运行它(使用ab加载它)。


1
然后,我将有两个应用程序进行负载测试。那将是扭曲的。
斯图尔特·罗宾逊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.