我需要使用模拟用户负载对站点进行负载测试。为此,我打算记录普通用户给定的 10 分钟使用情况的 Web 服务器日志,并使用它在多个并发线程上重放以模拟实际负载。
以下是我看过并拒绝的工具:
Apache 基准测试...可以对其进行编程,以通过哑请求访问服务器...但无法模拟用户负载。
HTTPerf - 可以将用户日志作为输入来模拟普通用户,但仅使用日志中的请求 URL...而不是请求时间。
Tsung - 与 HTTPerf 相同的问题...我可以记录用户 session ...但我仍然必须对用户“思考”时间进行编程...
JMeter 可以将用户 session 日志作为输入。不知道它是否可以模拟用户 session ,包括“思考”时间。
总之...有很多工具可以为我提供“日志重播”,但它们似乎都只是使用日志来收集请求 URL 来模拟用户 session 。他们实际上都没有使用时间戳来模拟真实用户和他们的“思考”时间。
- JMeter 似乎是我唯一没有尝试过的工具。 JMeter能解决这个问题吗?
- 通过在我的服务器日志上使用 sed/awk 并创建一个 ruby 脚本来解析请求 URL 和“思考”时间,然后启动并发线程,这个问题是否更容易解决?
也欢迎任何其他建议。
最佳答案
有一个类似的问题 - 需要一个工具来重播生产服务器的日志,保持所有间隙不变。另外,想要操作一些 http header 。
作为系统管理员,首先使用 ab 在 bash 上编写脚本。速度不是那么快吗?
如果 Jmeter 易于使用,那就太棒了。
因此,最终编写了自己的工具通过重放日志来进行负载测试。 它是用 ruby 编写的。考虑到任何重放日志的工具大部分时间都花在网络 io 等待上,而不是在 cpu 上,所以 ruby GIL 应该不成问题。 它是多线程的,按原样重播日志,尊重日志条目之间的间隙(如果您有一些:)
如果您正在运行 varnish,您还可以使用 varnishncsa 实时重播。 可以上github获取:https://github.com/maxchk/grad
希望这会有所帮助。
关于jmeter - 用于负载测试的重播日志 - 是否有任何工具可以模拟请求之间的实际用户时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10379316/