模板板网站,快速开发平台 免费开源,网页网络游戏,如何禁用wordpress播放器在性能测试中#xff0c;当面对海量用户请求的压力测试时#xff0c;单机模式的JMeter往往力不从心。如何通过分布式集群环境#xff0c;充分发挥JMeter的性能测试能力#xff1f;这正是许多测试工程师在面临高并发、海量数据时最关注的问题。那么#xff0c;如何轻松搭建…在性能测试中当面对海量用户请求的压力测试时单机模式的JMeter往往力不从心。如何通过分布式集群环境充分发挥JMeter的性能测试能力这正是许多测试工程师在面临高并发、海量数据时最关注的问题。那么如何轻松搭建JMeter分布式集群环境实现性能测试的最大化呢
你是否也曾为测试负载过大而不知所措你是否对JMeter的分布式集群功能充满好奇今天我们将详细讲解如何通过搭建JMeter分布式集群环境帮助你轻松应对高并发、高负载的性能测试需求 分布式测试的优势 在分布式测试环境中多个负载机Slave协同工作可以生成更高的并发量突破单机的资源限制。 真实案例 某大型电商平台曾通过JMeter分布式集群测试模拟上百万用户访问场景精准定位系统瓶颈成功避免了购物节期间的崩溃事故。 前提条件 在开始之前请确保满足以下前提条件 ·确保 JMeter 能够访问待测试的服务器可以通过虚拟机上的 curl 命令来检查连通性如果无法访问你可能需要调研当前环境是否能够用来作为压力源 · 确保所有系统上使用相同版本的 JMeter我们当前使用的是 5.6.3。混用不同版本可能无法正常工作 · 确保系统上的防火墙已禁用或正确打开了相关端口 概念 控制节点运行 jmeter-client 的系统它控制测试。该系统可以是你的笔记本电脑需要先打开防火墙或虚拟机。 工作节点运行 jmeter-server 的系统它接收来自 jmeter-client 的指令并向目标系统发送请求通常是虚拟机。 目标我们计划进行压力测试的 Web 服务器。 安装 对于 MacOS 使用 Homebrew 安装 JMeter并通过 jmeter --version 命令验证安装 brew install jmeterjmeter --version 在我编写本文时使用的版本是 5.6.3。 对于 Ubuntu20 不要 使用 apt install jmeter 命令安装 JMeter因为 apt 安装的版本已过时2.13加载 .jmx 文件将会报错从而无法正常工作。 手动安装 1. 在 VM 上安装 JDK sudo apt install openjdk-11-jre-headless 2. 从 https://jmeter.apache.org/download_jmeter.cgi 下载压缩包文件通过你的 笔记本电脑然后将其上传至 VM。 3. 使用 scp/rsync 上传至虚拟机然后解压最新的 JMeter 压缩包。在笔记本电脑上输入以下命令请记得修改目标目录 rsync -avz apache-jmeter-5.6.3/ remote-host:/path/to/place 4. 将文件移动至正确位置并修改 PATH 环境变量 # 移动至合适的目录比如 /opt/jmeter sudo mv /path/to/place /opt/ # 将其添加到 PATH你可以将其写入 ~/.bashrc 文件以持久化配置 vim ~/.bashrcexport PATH/opt/jmeter/bin:$PATH # 退出 vim 并使用 source 命令生效 source ~/.bashrc 5. 检查版本确保一切就绪 jmeter --version 输出结果应如下所示 _ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____ / \ | _ \ / \ / ___| | | | ____| | | \/ | ____|_ _| ____| _ \ / _ \ | |_) / _ \| | | |_| | _| _ | | |\/| | _| | | | _| | |_) | / ___ \| __/ ___ \ |___| _ | |___ | |_| | | | | |___ | | | |___| _ /_/ \_\_| /_/ \_\____|_| |_|_____| \___/|_| |_|_____| |_| |_____|_| \_\ 5.6.3 Copyright (c) 1999-2024 The Apache Software Foundation 配置 在运行分布式模式之前需要完成以下配置 在控制节点 将服务器 IP 添加到客户端的 Properties 文件中 在 $JMETER_HOME/bin/jmeter.properties 文件中本文的路径是 /opt/jmeter/bin/jmeter.properties找到名为 remote_hosts 的单元添加正在运行的 JMeter 服务器的 IP 地址。可以添加多个服务器用逗号分隔例如 # Edit the line: remote_hosts127.0.0.1 and configure as below:remote_hosts10.0.0.1,10.0.0.2,10.0.0.3 通过更改值并取消注释来禁用 rmi.ssl server.rmi.ssl.disabletrue 同时强烈建议将默认的 jmeter.reportgenerator.overall_granularity 值从 60 秒更改为 5 秒以获得更好的报告体验 jmeter.reportgenerator.overall_granularity5000 否则你的报告可能就会长成这样 更改此值后上述的报告将更易读 在工作节点 通过更改值并取消注释来禁用 rmi.ssl server.rmi.ssl.disabletrue 然后启动 jmeter-server 以监听来自控制节点的命令 jmeter-server 你应看到如下输出 $ jmeter-server
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release Created remote object: UnicastServerRef2 [liveRef: [endpoint:[10.0.0.1:38803](local),objID:[-7d9e7ab6:1916e54ddb2:-7fff, -6565134591293374723]]] 使用方式 单节点模式 使用单节点模式进行调试命令如下 jmeter -n -t script_path -l results-file 选项 -n以非 GUI 模式运行 JMeter 选项 -t要运行的 JMeter 测试.jmx文件 选项 -l指定结果日志文件 分布式模式 注意 所有服务器将运行相同的测试计划。JMeter 不会在服务器之间分配负载每台服务器都会运行完整的测试计划。因此如果你设置 1000 个线程并有 6 台 JMeter 服务器你最终将注入 6000 个线程。 如果 jmeter.properties 文件配置正确只需在执行命令时添加 -r 选项例如 jmeter -n -t script_path -l results-file -r 选项 -r使用 remote_hosts 属性中指定的所有节点。 你还可以使用 -R 选项指定希望使用的节点例如 jmeter -n -t script_path -l results-file -R 10.0.0.1,10.0.0.2 此时只有 10.0.0.1 和 10.0.0.2 会参与测试输出将如下所示 $ jmeter -n -t demo.jmx -l result.csv -r WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release Creating summariser summary Created the tree successfully using demo.jmx Configuring remote engine: 10.0.0.1 Configuring remote engine: 10.0.0.2 Starting distributed test with remote engines: [10.0.0.1, 10.0.0.2] 2024 Aug 20 14:11:02 CST (1724134262441) Warning: Nashorn engine is planned to be removed from a future JDK release Remote engines have been started:[10.0.0.1, 10.0.0.2] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 summary 1 in 00:00:00 17.2/s Avg: 1 Min: 1 Max: 1 Err: 0 (0.00%) Active: 2 Started: 2 Finished: 0 summary 5999 in 00:00:10 605.8/s Avg: 0 Min: 0 Max: 3 Err: 0 (0.00%) Active: 0 Started: 200 Finished: 200 summary 6000 in 00:00:10 602.2/s Avg: 0 Min: 0 Max: 3 Err: 0 (0.00%) Tidying up remote 2024 Aug 20 14:11:12 CST (1724134272743) … end of run HTML 报告生成 要从现有结果文件生成报告使用以下命令 jmeter -g result-file -o Path to output folder 或者在负载测试完成后立即生成报告使用以下命令 jmeter -n -t script_path -l result-file -r -e -o Path to output folder 假设你运行以下命令 jmeter -n -t demo.jmx -l result.csv -r -e -o report 然后你将看到如下输出 $ ll ./report/total 32drwxr-xr-x 4 dohong users 4096 Aug 20 14:44 ./drwx------ 10 dohong users 4096 Aug 20 14:44 ../drwxr-xr-x 5 dohong users 4096 Aug 20 14:44 content/-rw-r--r-- 1 dohong users 9669 Aug 20 14:44 index.htmldrwxr-xr-x 5 dohong users 4096 Aug 20 14:44 sbadmin2-1.0.7/-rw-r--r-- 1 dohong users 890 Aug 20 14:44 statistics.json 双击打开 index.html 文件你就会得到类似如下的报告: 左侧导航栏可以切换不同的页面查看不同的统计数据和图表至此分布式压测的环境搭建就全部大功告成了。 注意事项 ·将 jmeter.reportgenerator.overall_granularity 的值从 60000 改为 5000 强烈建议这可以带来更好的报告体验。 · 无需手动同步测试脚本到工作节点JMeter 会为你完成同步但仍需要将本地脚本同步到控制节点 · 使用 CLI 模式 而非 GUI 模式避免性能下降 · 使用尽可能少的监听器如果使用 -l 标志记录结果监听器可以删除或禁用。 · 在负载测试过程中不要使用 查看结果树 或 查看表格中的结果 监听器它们应仅在脚本调试阶段使用否则性能可能会下降 3 倍 · 如果测试需要大量数据尤其是随机化或加密/解密数据请将测试数据提前生成并通过 CSV 数据集读取文件这可以避免运行时浪费资源。 在当前的技术趋势中微服务架构和云原生的普及使得系统规模更庞大、模块更多性能测试的重要性更加突出。JMeter分布式测试成为企业应对复杂性能测试需求的首选方案。
搭建JMeter分布式集群不仅提升了性能测试的能力也为系统性能优化提供了更加全面的数据支撑。掌握这项技能让你的性能测试如虎添翼 “高并发不是系统的敌人而是推动性能优化的良师益友——关键在于你是否具备掌控它的能力”