当前位置: 首页 > news >正文

技术难点思考SpringBoot如何集成Jmeter开发

技术难点思考SpringBoot如何集成Jmeter开发

需求概述

        构建一个高性能的压测平台,该平台需通过Spring Boot框架调用JMeter进行自动化压力测试。

解决方案一:使用Runtime类调用外部进程

技术概述

Java的Runtime类提供了与操作系统交互的接口,允许Java应用程序执行系统命令、启动外部应用程序或脚本,并与之进行交互。以下是Runtime类在本场景中的应用:

  1. 启动和管理进程:使用Runtime类的exec()方法启动JMeter的命令行工具,进行压力测试。
  2. 访问系统资源:通过Runtime类的方法,如totalMemory()和freeMemory(),监控Java虚拟机的内存使用情况。
  3. 执行特定操作:使用Runtime类提供的exit()方法安全地终止应用程序,以及使用nanoTime()和currentTimeMillis()获取精确的时间信息。

Runtime类

Runtime类是Java中的一个核心类,提供了与Java运行时环境交互的方法

它提供了与操作系统交互的接口,使Java应用程序能够执行系统命令、访问系统资源并执行特定操作。

主要用途包括以下几个方面:

  • 启动和管理进程

    • Runtime类提供了一些方法,如exec(),用于启动和管理外部进程。

    • 这使得Java应用程序能够执行系统命令、启动其他应用程序或脚本,以及与外部进程进行交互。

  • 访问系统资源

    • Runtime类提供了一些方法,如totalMemory()freeMemory(),用于获取Java虚拟机的内存信息。

    • 还可以使用getSystemResource()方法获取系统资源路径,如类路径、库路径等。

  • 执行特定操作

    • Runtime类还提供了一些方法,如exit(),用于终止Java应用程序。

    • 还可以使用nanoTime()方法获取当前纳秒时间,以及使用currentTimeMillis()方法获取当前毫秒时间。

JMeter命令行压测详解

进入JMeter的bin目录。

使用命令行参数启动JMeter

./jmeter -n -t /Users/xdclass/Desktop/report.jmx -l /Users/xdclass/Desktop/temp/jtl/result.jtl -e -o /Users/xdclass/Desktop/temp/result

包括:

  • -n:以非GUI模式运行JMeter。
  • -t <jmx文件路径>:指定JMeter测试脚本的路径。
  • -l <结果日志路径>:指定测试结果日志的保存路径,需确保文件夹存在且文件名不重复。
  • -e:在测试脚本运行结束后生成HTML格式的测试报告。
  • -o <报告目录路径>:指定存放HTML报告的目录,需确保文件夹存在。

编码实战

public class JMeterIntegration {public static void main(String[] args) {try {// 构建JMeter命令行调用String command = "/path/to/jmeter/bin/jmeter -n -t /path/to/test.jmx -l results.log -e -o /path/to/result";Process process = Runtime.getRuntime().exec(command);// 读取JMeter输出new BufferedReader(new InputStreamReader(process.getInputStream())).lines().forEach(System.out::println);// 等待JMeter进程结束并获取退出码int exitCode = process.waitFor();System.out.println("JMeter process exited with code: " + exitCode);} catch (IOException | InterruptedException e) {e.printStackTrace();}}
}

问题点

  • 可读性和维护拓展性差,难以平台化,停留现有认知

相关文章:

技术难点思考SpringBoot如何集成Jmeter开发

技术难点思考SpringBoot如何集成Jmeter开发 需求概述 构建一个高性能的压测平台&#xff0c;该平台需通过Spring Boot框架调用JMeter进行自动化压力测试。 解决方案一&#xff1a;使用Runtime类调用外部进程 技术概述 Java的Runtime类提供了与操作系统交互的接口&#xff0…...

如何快速使用C语言操作sqlite3

itopen组织1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源&#xff0c;拥抱国产化 一、sqlite3库介绍 sqlite3库可从官网下载&#xff0c;当前版本为sqlite3 3.45.3ht…...

网络模型介绍

网络模型在网络领域中主要指的是用于描述计算机网络系统功能的各种框架&#xff0c;其中最具代表性的两种模型是OSI七层参考模型和TCP/IP四层参考模型。以下是对这两种网络模型的详细解析&#xff1a; 一、OSI七层参考模型 OSI&#xff08;Open System Interconnection&#…...

Codeforces Round #956 (Div. 2) and ByteRace 2024

A题&#xff1a;Array Divisibility 思路&#xff1a; 大水题 code&#xff1a; inline void solve() {int n; cin >> n;for (int i 1; i < n; i ) {cout << i << " \n"[i n];}return; } B题&#xff1a;Corner Twist 思路&#xff1…...

域名、网页、HTTP概述

目录 域名 概念 域名空间结构 域名注册 网页 概念 网站 主页 域名 HTTP URL URN URI HTML 超链接 发布 HTML HTML的结构 静态网页 特点 动态网页 特点 Web HTTP HTTP方法 GET方法 POST方法 HTTP状态码 生产环境下常见的HTTP状态码 域名 概念 IP地…...

Redisson分布式锁、可重入锁

介绍Redisson 什么是 Redisson&#xff1f;来自于官网上的描述内容如下&#xff01; Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的 redis 常用数据结构命令服务&#xff0c;还提供了…...

适合宠物饮水机的光电传感器有哪些

如今&#xff0c;随着越来越多的人选择养宠物&#xff0c;宠物饮水机作为一种便捷的饮水解决方案日益受到欢迎。为了确保宠物随时能够获得足够的水源&#xff0c;宠物饮水机通常配备了先进的光电液位传感器技术。 光电液位传感器在宠物饮水机中起着关键作用&#xff0c;主要用…...

『Python学习笔记』Python运行设置PYTHONPATH环境变量!

Python运行设置PYTHONPATH环境变量&#xff01; 文章目录 一. Python运行设置PYTHONPATH环境变量&#xff01;1. 解释2. 为什么有用3. 示例4. vscode配置 一. Python运行设置PYTHONPATH环境变量&#xff01; export PYTHONPATH$(pwd) 是一个命令&#xff0c;用于将当前目录添…...

2024年06月CCF-GESP编程能力等级认证Python编程三级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证…...

代码随想录算法训练营:20/60

非科班学习算法day20 | LeetCode235:二叉搜索树的最近公共祖先 &#xff0c;Leetcode701:二叉树的插入操作 &#xff0c;Leetcode450:删除二叉搜索树的节点 介绍 包含LC的两道题目&#xff0c;还有相应概念的补充。 相关图解和更多版本&#xff1a; 代码随想录 (programmer…...

Apache Seata应用侧启动过程剖析——RM TM如何与TC建立连接

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata应用侧启动过程剖析——RM & TM如何与TC建立连接 前言 看过官网 README 的第…...

Origin 的使用

官网&#xff1a;OriginLab - Origin and OriginPro - Data Analysis and Graphing Software 安装&#xff1a;Origin2022最新最详细的安装教程 学生免费&#xff1a;Origin 官方正版免费续期教程 更改语言&#xff1a;解决OriginPro2024学生版本的更改中文change language灰…...

MySQL相关知识点

目录 1. 基本概念2. 数据类型3. 数据库操作4. 表操作5. 数据操作6. 索引7. 约束8. 事务9. 存储过程和触发器10. 优化和性能调优11. 安全性12. 备份和恢复 MySQL 是一个广泛使用的 关系数据库管理系统 (RDBMS)。了解 MySQL 的主要知识点可以帮助你更好地设计、管理和优化数据库…...

第4章 Vite模块化与插件系统(二)

4.3 常用插件介绍 4.3.1 官方插件 vitejs/plugin-vue 用于支持 Vue.js 开发&#xff1a; npm install vitejs/plugin-vue --save-devimport vue from vitejs/plugin-vueexport default defineConfig({plugins: [vue()] })vitejs/plugin-react 用于支持 React 开发&#xf…...

前端传到后端的data数组中有些属性值为空

将前端输入框中的值全部放入data中传入后端&#xff0c;但是在后端查看发现后端接收到的数据有些属性值为空。 第一种情况&#xff1a;只有第一个属性为空&#xff0c;其余属性接收正常 可能原因&#xff1a;后端用来接收的 比如前端发送数据&#xff1a; 实际上前端发送的数…...

怎么批量下载网页里的图片和视频 如何批量下载一个网站的所有图片 如何批量下载网页视频文件 idm软件怎么下载

当我们在网站内需要下载大量图片时&#xff0c;一张一张的下载非常麻烦。这里推荐大家使用IDM这款网页图片下载工具。下面&#xff0c;我将介绍怎么批量下载网页里的图片和视频&#xff0c;如何批量下载一个网站的所有图片的解决方法。 一、怎么批量下载网页里的图片和视频 …...

Python面试题:在 Python 中,如何处理文件操作?

在Python中&#xff0c;文件操作&#xff08;如读取和写入文件&#xff09;是一个常见的任务。Python标准库提供了内置的函数和上下文管理器来简化文件操作。以下是处理文件操作的一些基本方法和示例&#xff1a; 打开和关闭文件 使用open()函数打开文件。该函数返回一个文件…...

红日靶机1

靶场环境 使用kali攻击web服务器&#xff0c;然后根据web服务器攻击其他域内的机器 这里很明确kali是攻击机&#xff0c;外网机器&#xff0c;局域网中的win7是web服务器&#xff0c;有2个网卡&#xff0c;通内网和外网&#xff0c;2k3以及2008r2是内网机器&#xff0c;不出网&…...

Windows电脑PC使用adb有线跟无线安装apk包

在Android开发中&#xff0c;经常需要使用ADB&#xff08;Android Debug Bridge&#xff09;来安装APK包到Android设备上&#xff0c;无论是通过有线连接还是无线连接。以下将分别介绍如何通过有线和无线方式使用ADB安装APK包。 有线连接安装APK 启用开发者选项和USB调试&…...

如何把harmonos项目修改为openharmony项目

一开始分不清harmonyos和openharmony&#xff0c;在harmonyos直接下载的开发软件&#xff0c;后面发现不对劲&#xff0c;打脑阔 首先你要安装对应版本的开发软件&#xff0c;鸿蒙开发是由harmonyos和openharmony官网两个的&#xff0c;找到对应的地方下载对应版本的开发软件&…...

Windows 11 任务栏透明美化神器:TranslucentTB 完全使用指南

Windows 11 任务栏透明美化神器&#xff1a;TranslucentTB 完全使用指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 想要让 Windows …...

Engram:解锁AI潜能,系统优化新高度!

Engram是一种基于LLM的智能体研究者架构&#xff0c;旨在解决系统优化中AI的两个关键局限&#xff1a;进化邻域偏差和连贯性上限。通过将长时程探索与单一上下文窗口解耦&#xff0c;Engram组织一系列智能体迭代设计、测试和分析机制。每次运行结束时&#xff0c;智能体将代码快…...

CGAL Point_set_processing 点集处理函数自查表

参考来源&#xff1a; CGAL 6.1.1 - Point Set Processing: Algorithms 一、尺度 / K 值估算 返回值函数名作用用法示例size_testimate_global_k_neighbor_scale估算全局最优 K 邻域estimate_global_k_neighbor_scale(points)FTestimate_global_range_scale估算全局最优搜索…...

不止于画图:用@antv/g6-editor的Command系统打造可撤销/重做的智能流程设计器

超越基础绘图&#xff1a;利用antv/g6-editor构建企业级智能流程设计器 在当今快速发展的数字化时代&#xff0c;流程设计工具已成为企业数字化转型的核心组件。从简单的审批流程到复杂的业务编排&#xff0c;一个功能完备的流程设计器不仅能提升工作效率&#xff0c;更能确保…...

电气工程优化调度Matlab代码优化与注释那些事儿

优化调度修改、注释、matlab代码&#xff0c;主要为但不限于电气工程优化调度相关方向 主要包括&#xff0c;但不限于&#xff1a; 1、在原有程序基础上替换算法&#xff1b; 2、修改优化调度程序yalmip求解器ipopt&#xff1b; 3、新买的代码没注释&#xff0c;可以注释并可以…...

OpCore Simplify:自动化OpenCore EFI配置的革命性工具

OpCore Simplify&#xff1a;自动化OpenCore EFI配置的革命性工具 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify是一款专为Hackinto…...

不用公网IP!用cpolar内网穿透实现PicHome多设备同步的3种方案对比

零公网IP实现PicHome多端同步&#xff1a;cpolar内网穿透全方案解析 在数字资产爆炸式增长的今天&#xff0c;如何安全高效地管理个人媒体库成为现代人的刚需。PicHome作为一款开源网盘系统&#xff0c;凭借其Docker化部署的便捷性和AI增强的媒体管理能力&#xff0c;正在成为家…...

阿里开源CosyVoice2-0.5B:快速部署声音克隆应用,小白友好教程

阿里开源CosyVoice2-0.5B&#xff1a;快速部署声音克隆应用&#xff0c;小白友好教程 1. 项目简介与核心能力 CosyVoice2-0.5B是阿里开源的一款轻量级语音克隆工具&#xff0c;专为快速部署和简单使用而设计。这个模型最吸引人的特点是&#xff1a; 3秒极速复刻&#xff1a;…...

自动驾驶模拟平台模型配置全指南:从技术选型到场景验证

自动驾驶模拟平台模型配置全指南&#xff1a;从技术选型到场景验证 【免费下载链接】alpasim 项目地址: https://gitcode.com/GitHub_Trending/al/alpasim 一、AlpaSim核心价值&#xff1a;构建自动驾驶研发闭环 AlpaSim作为开源自动驾驶模拟平台&#xff0c;通过模块…...

CSS 嵌套语法最佳实践:从入门到精通的完整指南

CSS 嵌套语法最佳实践&#xff1a;从入门到精通的完整指南 CSS 是流动的韵律&#xff0c;JS 是叙事的节奏。而 CSS 嵌套&#xff0c;是让这份韵律更加优雅、结构更加清晰的魔法。 一、CSS 嵌套&#xff1a;现代样式表的革命 CSS 嵌套&#xff08;Nesting&#xff09;是 CSS 原…...