浅谈取样器之OS进程取样器

浅谈取样器之OS进程取样器

JMeter 的 OS 进程取样器(OSProcess Sampler)允许用户在 JMeter 测试计划中直接执行操作系统命令或脚本。这一功能对于需要集成系统级操作到性能测试场景中尤为有用,比如运行数据库备份脚本、调用系统维护命令或执行自定义编写的脚本(如 Python、Shell 等)。通过这种方式,你可以扩展 JMeter 的能力,使之不仅限于网络服务的负载测试,还能涵盖更广泛的系统层面交互。

配置步骤

  1. 添加 OS 进程取样器
    ○ 打开 JMeter,创建或打开一个测试计划。
    ○ 在测试计划的相应位置(如线程组内),右键选择“添加” > “取样器” > “OS 进程取样器”。
  2. 设置命令和参数
    ○ Command:在此字段输入你想要执行的命令或脚本的完整路径。例如,在 macOS/Linux 系统上执行 Python 脚本,路径可能类似于 /User/xx/Desktop/my_script.py;在 Windows 上,则可能是 D:\Scripts\my_script.bat。
    ○ Command parameters:如果命令需要额外的参数,可以在这一栏中提供。参数应按照命令行格式输入,多个参数之间使用空格分隔。例如,如果你的 Python 脚本需要参数,可以写成 param1 value1 param2 value2。
  3. 环境变量与工作目录
    ○ JMeter 允许你设置环境变量,这些变量对执行的命令或脚本可用。使用“名称”和“值”字段来定义它们。
    ○ 工作目录:指定执行命令时的工作目录,这在脚本依赖于相对路径资源时尤为重要。
  4. 处理输出
    ○ OS 进程取样器允许你控制命令的输出处理方式,包括标准输出(stdout)和标准错误(stderr)。你可以选择将其存储为变量、写入文件或忽略。
  5. 超时设置
    ○ 为了防止命令执行无限期挂起,可以设置超时时间(Timeout),单位为毫秒。
    假设你有一个简单的 Python 脚本(my_script.py),用于模拟数据处理任务,你可以在 JMeter 中这样配置 OS 进程取样器以执行它:
    ● Command: /usr/bin/python3 /path/to/your/my_script.py
    ● Command parameters: 如果脚本接受参数,如 -input data.txt -output result.csv
    ● 设置适当的环境变量和工作目录(如果需要)。
    ● 可选地,设置超时,比如 60000 毫秒,以避免长时间无响应。

应用实例

情况1:OS进程取样器无参数

首先我们使用Python编写一段py脚本,内容如下

name="hello world"
print (name)

然后我们在我们的pc上新建一个test.bat的文件,文件里面的内容如下:

python d:\OSprocess.py

我们编写如下脚本
在这里插入图片描述
线程组:保持默认
OS进程取样器:命令中设置C:\Users\27988\Desktop\test.bat
运行脚本,查看结果树,可以看到结果如下
在这里插入图片描述
查看OS进程取样器中响应数据中的Response Body

D:\apache-jmeter-5.1.1\bin>python C:\Users\27988\PycharmProjects\pythonProject\OSprocess.py
hello world

情况2:OS进程取样器传参数

首先我们使用Python编写一段py脚本,内容如下

import sys
print (sys.argv[0])
print (sys.argv[1:])for i in sys.argv:print(i)

然后我们在我们的pc上新建一个test.bat的文件,文件里面的内容如下:

python d:\OSprocess.py %1 %2 %3

我们编写如下脚本
在这里插入图片描述
线程组:保持默认
OS进程取样器:命令中设置C:\Users\27988\Desktop\test.bat
运行脚本,查看结果树,可以看到结果如下
在这里插入图片描述
查看OS进程取样器中响应数据中的Response Body

D:\apache-jmeter-5.1.1\bin>python C:\Users\27988\PycharmProjects\pythonProject\OSprocess.py test1 test2 test3
C:\Users\27988\PycharmProjects\pythonProject\OSprocess.py
[‘test1’, ‘test2’, ‘test3’]
C:\Users\27988\PycharmProjects\pythonProject\OSprocess.py
test1
test2
test3

情况3:OS进程取样器standard output

在上述情况2的情况下,标准流中的Standard output中输入D:\te1.txt
运行脚本,打开te1.txt文件,查看里面内容如下

D:\apache-jmeter-5.1.1\bin>python C:\Users\27988\PycharmProjects\pythonProject\OSprocess.py test1 test2 test3
C:\Users\27988\PycharmProjects\pythonProject\OSprocess.py
[‘test1’, ‘test2’, ‘test3’]
C:\Users\27988\PycharmProjects\pythonProject\OSprocess.py
test1
test2
test3

情况4:OS进程取样器返回码检查

在上述情况3的情况下,勾选返回码检查,预期返回代码设置为1
运行脚本,查看结果树
在这里插入图片描述

取样器结果里面能够看到如下内容
Response message: Unexpected return code. Expected [1]. Actual [0].

情况5:OS进程取样器超时

在上述情况4的情况下,设置Timeout(ms)为1
运行脚本,查看结果树
在这里插入图片描述
取样器结果里面能够看到如下内容
Response code: 500
Response message: System Sampler interrupted whilst executing system call: java.lang.InterruptedException: Process timeout out after 1 milliseconds

注意事项

● 确保所使用的命令或脚本在执行 JMeter 的用户权限下可执行。
● 跨平台兼容性:命令路径和脚本格式需要根据操作系统进行调整。
● 安全性:执行系统命令时要格外小心,确保不会引入安全风险或意外破坏系统。

总结

通过上述步骤,你可以有效地利用 JMeter 的 OS 进程取样器来集成操作系统级别的操作到性能测试中,从而实现更复杂的测试场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387679.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存储引擎MyISAM和InnoDB

存储引擎:创建、查询、更新、删除 innoDB:64T、支持事物、不支持全文索引、支持缓存、支持外键、行级锁定 MyISAM:256T、不支持事物、支持全文索引、插入和查询速度快 memory:内存、不支持事物、不支持全文索引,临时…

不得不安利的程序员开发神器,太赞了!!

作为一名程序员,你是否常常为繁琐的后端服务而感到头疼?是否希望有一种工具可以帮你简化开发流程,让你专注于创意和功能开发?今天,我要向大家隆重推荐一款绝佳的开发神器——MemFire Cloud。它专为懒人开发者准备&…

KVM高级功能部署

KVM(Kernel-based Virtual Machine)是一个在Linux内核中实现的全虚拟化解决方案。除了基本的虚拟化功能外,KVM还提供了许多高级功能,以增强其性能、安全性和灵活性。以下是一些KVM的高级功能: 硬件加速: In…

基于Deap遗传算法在全量可转债上做因子挖掘(附python代码及全量因子数据)

原创文章第604篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 在4.x的时候,咱们分享过deap遗传算法挖掘因子的代码和数据,今天我们来升级到5.x中。 源码发布Quantlab4.2,Deap因子挖掘|gplearn做不到的咱们也…

全新微软语音合成网页版源码,短视频影视解说配音网页版系统-仿真人语音

源码介绍 最新微软语音合成网页版源码,可以用来给影视解说和短视频配音。它是TTS文本转语言,API接口和PHP源码。 这个微软语音合成接口的源码,超级简单,就几个文件搞定。用的是官方的API,试过了,合成速度…

Datawhale AI夏令营 AI+逻辑推理 Task2总结

Datawhale AI夏令营 AI逻辑推理 Task2总结 一、大语言模型解题方案介绍 1.1 大模型推理介绍 ​ 推理是建立在训练完成的基础上,将训练好的模型应用于新的、未见过的数据,模型利用先前学到的规律进行预测、分类和生成新内容,使得AI在实际应…

力扣SQL50 换座位

Problem: 626. 换座位 👨‍🏫 参考题解 Code SELECT(CASEWHEN MOD(id, 2) ! 0 AND counts ! id THEN id 1WHEN MOD(id, 2) ! 0 AND counts id THEN idELSE id - 1END) AS id,student FROMseat,(SELECTCOUNT(*) AS countsFROMseat) AS seat_counts O…

C语言实现三子棋

通过一段时间的学习,我们已经能够较为熟练地使用分支语句,循环语句,创建函数,创建数组,创建随机数等。之前我们做过一个扫雷游戏,今天让我们再尝试创作一个三子棋游戏吧~ 一、三子棋游戏的思路 三子棋的游…

AI Agent调研--7种Agent框架对比!盘点国内一站式Agent搭建平台,一文说清差别!大家都在用Agent做什么?

代理(Agent)乃一种智能实体,具备自主环境感知与决策行动能力,旨在达成既定目标。作为个人或组织之数字化替身,AI代理执行特定任务与交易,其核心价值在于简化工作流程,削减繁复性,并有…

IoTDB 入门教程 实战篇④——C#示例(开源)

文章目录 一、前文二、新建C#项目三、NuGet安装四、示例源码五、查询数据六、参考 一、前文 IoTDB入门教程——导读 本文详细阐述了如何通过一个C#项目成功连接到IoTDB时序数据库,进而展示了如何向该数据库高效地写入数据以及执行精确的数据查询操作。 此示例旨在为…

Javascript前端面试基础(九)

浏览器缓存 浏览器缓存分为强缓存和协商缓存。当客户端请求某个资源时,获取缓存的流程如下 先根据这个资源的一些http header判断它是否命中强缓存,如果命中则直接从本地获取缓存资源,不会发请求到服务器;当强缓存没有命中时,客户…

【Qt开发】No matching signal for on_toolButton_clicked() 解决方案

【Qt开发】No matching signal for on_toolButton_clicked() 解决方案 文章目录 No matching signal for xxx 解决方案附录:C语言到C的入门知识点(主要适用于C语言精通到Qt的C开发入门)C语言与C的不同C中写C语言代码C语言到C的知识点Qt开发中…

企业级Linux系统防护

一、企业级Linux系统防护概述 一)企业级Linux系统安全威胁 企业级Linux系统安全威胁列表 解决的主要安全威胁安全威胁牵涉到的人员及操作文件系统防护避免有意/无意的文件篡改、越权访问,根用户(root)权限泛滥企业内部用户误操作、…

UPLOAD-LABS靶场[超详细通关教程,通关攻略]

---------------------------------------- 靶场环境: 下载链接: https://codeload.github.com/c0ny1/upload-labs/zip/refs/heads/master 使用小皮集成环境来完成这个靶场 将文件放到WWW目录下就可以进行访问 ------------------------------------…

CTF-Web习题:[GXYCTF2019]Ping Ping Ping

题目链接:[GXYCTF2019]Ping Ping Ping 解题思路 访问靶机,得到如下页面,类似于URL参数 尝试用HackBar构造url传输过去看看 发现返回了ping命令的执行结果,可以猜测php脚本命令是ping -c 4 $ip,暂时不知道执行的函数…

学习Numpy的奇思妙想

学习Numpy的奇思妙想 本文主要想记录一下,学习 numpy 过程中的偶然的灵感,并记录一下知识框架。 推荐资源:https://numpy.org/doc/stable/user/absolute_beginners.html 💡灵感 为什么 numpy 数组的 shape 和 pytorch 是 tensor 是…

Ribbon负载均衡与内核原理

什么是Ribbon? 目前主流的负载方案分为两种: 集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如F5),也有软件的(Nginx)客户端根据自己的请求做负…

FFmpeg研究

1.FFmpeg介绍 FFmpeg的全称是“Fast Forward Moving Picture Expert Group”,组件由命令行应用程序和函数库两部分组成。通俗概括来说,FFmpeg 是一个免费的开源程序库,一个多媒体音视频处理分析工具软件,且提供命令行方式调用&am…

C语言笔记38 •数据结构--队列•

数据结构--队列 1.队列的定义 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有 先 进先出 FIFO(First In First Out). 入队列:进行插入操作的一端称为 队尾 出队列:进行删除操作的…

Jmeter混合压测(2407)

一 压测需求: 电商作为服务端,至少需要满足并发量,QPS:100/s,TPS:20/s。例如场景: 电商交易中,商品图片请求量最多,电商服务端需要满足并发请求查询图片信息。各家可能会并发请求同一家电商商品、订单等内容。 二 压…