如何使用 JMeter 查找死锁、超时和内存问题?

How to find deadlock, timeout and memory issues using JMeter?

我是性能测试新手。我的任务是衡量 Web 应用程序的性能。我需要找出哪些 modules/calls 导致了死锁、超时和内存问题。

Q1。我如何使用 JMeter 找出死锁、内存和超时问​​题?如果我执行以下步骤,这是跟踪这些问题的正确方法吗?

  1. 在JMeter中创建一个包含多个线程组的测试计划。
  2. 在每个线程组中,它包含多个HTTP请求和200个或 更多用户加上无限循环。
  3. 监控 JMeter 结果和 SQL 死锁分析器。

Q2。 JMeter 是跟踪这些问题的正确工具吗?或者,我应该使用基于浏览器的性能测试工具,例如 LoadNinja、LoadView 吗?

谢谢 邦妮

  1. Q1 JMeter 本身不提供任何工具链来检测死锁和内存问题,HTTP Request sampler (or even better HTTP Request Defaults) 提供了设置超时的可能性,如果值为空 - 它将默认操作系统超时或网络服务器超时,先到先得

    如果您执行某种形式的 stress test,即从 1 个虚拟用户开始并在某个时间点逐渐增加负载,您会发现响应时间开始增长,每秒请求数开始减少。所以这是最大系统性能点,之后性能会下降。

    要监控被测试内存的应用程序,您可以使用 JMeter PerfMon Plugin,它将允许您说明缺少 RAM 是否是性能问题的原因 关于死锁,它应该导致 HTTP 请求采样器失败(或超时),JMeter 不会给你根本原因,但它会给你时间戳,你应该能够检查你的 application/database 那一刻。

  2. Q2 well-behaved JMeter test must produce the same network footprint as a real browser,如果您的测试计划足够好,被测系统应该无法区分它是被 JMeter 命中还是被使用真实浏览器的真实用户命中. JMeter 不会为您提供客户端性能指标,例如页面呈现时间或 JavaScript 执行时间:

    JMeter is not a browser, it works at protocol level. As far as web-services and remote services are concerned, JMeter looks like a browser (or rather, multiple browsers); however JMeter does not perform all the actions supported by browsers. In particular, JMeter does not execute the Javascript found in HTML pages. Nor does it render the HTML pages as a browser does (it's possible to view the response as HTML etc., but the timings are not included in any samples, and only one sample in one thread is ever displayed at a time).