如何使用jmeter和visualVM进行负载测试?

Dae*_*ead 8 performance visualvm jmeter load-testing jvisualvm

我想为我的网站为1000万用户进行负载测试.该站点是基于Java的Web应用程序.我的方法是为所有链接创建一个Jmeter测试计划,然后为1000万用户报告.然后使用jvisualVM进行分析并检查是否存在任何瓶颈.

有没有更好的方法来做到这一点?这样做有没有现成的演示?我这是第一次这样做,所以任何帮助都会非常有帮助.

Uni*_*dow 6

您走在正确的道路上,但是您的负载限制很高。

为什么要说这是因为您的站点可能需要更多计算机才能处理10Milj并发用户。一个进程可能很难处理并发的32K TCP流。还要对实际处理10Milj用户所需的带宽进行一些数学计算。

现在,我不知道您打算在站点上提供什么样的服务,但是当考虑到JVisualVM将处理速度降低了10倍(或者方法跟踪的速度提高了10倍)时,如果您实际无法测量“真实世界”使JMeter和JVisualVM同时工作。

当您在较低负载下运行时,JVisualVM更有用。

首先要进行良好的测量,请确保您的基线良好。对10个并发用户进行测试,连接JVisuamVM并使其运行一段时间,而不是降低所有有趣的值。

有了基准之后,就可以开始增加更多的负载。添加10倍的负载(例如:100个用户),查看JVisualVM中的更改。继续执行此操作,直到JVisualVM明显降低了您的速度,每次增加额外的负载时,请确保已写下您感兴趣的数字。在图中绘制数字。

现在...(手动)为所需的用户数插入图形。这适用于内存使用,磁盘访问等,但不适用于已用的CPU时间,因为JVisualVM会占用CPU并为其提供无效数字(特别是如果您打开了方法跟踪)。

如果您真的想拥有多达10Milj的用户,我也不相信JMeter,我会编写一个自己的小测试程序来执行您想要的测试。这很不错,因为设置用于处理10Milj的站点也将花费一些时间,因此花一些额外的时间来使用测试工具并不是浪费。

  • 在最新的JDK版本中,JVisualVM具有采样分析器,该分析器不会按数量级影响性能。即使在中等负载下,也可以在生产服务器上完成这种性能分析。 (2认同)

Dae*_*ead 0

我在博客中介绍了我进行性能测试的方式:

  1. 确保服务器(硬件可以根据临时/生产要求)没有可能影响性能的其他安装。
  2. 为了在数据库中设置用户,可以使用一个过程,并且可以将其作为 jmeter 测试计划的一部分进行调用。
  3. 将jmeter安装在单独的机器上,这样jmeter就不会影响性能。
  4. 在 jmeter 中为所有 uri 创建一个测试计划(如图 1 所示),并进行响应检查和基于计时器的请求。
  5. 使用 jmeter 进行初始基准测试。
  6. 检查低性能 uri。这些是瓶颈的预期点。
  7. 尝试不同的选项来提高性能,但一次只关注一个瓶颈。
  8. 尝试第 6 步中的任一修复,然后进行基准测试。如果有任何改进,请提交更改并从步骤 5 开始重复。否则,恢复并尝试步骤 6 中的任何其他选项。
  9. 下一步将是使用负载平衡、硬件扩展、集群等。这可能包括一些物理设置和硬件/软件成本。给出具有可扩展性选项的结果。

详细解释:http://www.daemonthread.com/2011/06/site-performance-tuning-using-jmeter.html