Linux环境JMeter脚本性能测试、easyNmon生成监控报告

news2024/11/15 13:58:40

一、下载JMeter安装包

Jmeter是Java开发的,需要依赖JDK环境,因此我们需提前安装好JDK。

Jmeter是开源的工具,我们直接到官网下载即可。

最新版本下载地址:Apache JMeter - Download Apache JMeter

二、安装JMeter

#新建jmeter文件夹
mkdir jmeter
 
 
#解压文件
tar -xzvf apache-jmeter-5.2.1.tgz

 三、下载及安装easyNmon

github:https://github.com/mzky/easyNmon

#新建easyNmon文件夹
mkdir easyNmon
 
 
#解压文件
tar -zxvf easyNmon.tar.gz

解压完成后,打开文件夹easyNmon,通过如下命令启动:(选中自己合适方式)

./easyNmon  #前台启动,控制台断开服务停止
./easyNmon &  #后台启动,控制台断开服务同样停止
nohup ./easyNmon > easyNmon.log &  #后台启动,控制台断开服务仍正常运行

在easyNmon目录下,输入 ./easyNmon -h 查看相关信息

 一般使用 ./easyNmon & 即可,默认端口为9999

 四、jmx配置

<!--线程组-->

<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="测试" enabled="true">
    <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
    <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true">
        <boolProp name="LoopController.continue_forever">false</boolProp>
        <intProp name="LoopController.loops">-1</intProp>
    </elementProp>
    <stringProp name="ThreadGroup.num_threads">50</stringProp> <!--并发数-->
    <stringProp name="ThreadGroup.ramp_time">1</stringProp>    <!--1sec完成-->
    <boolProp name="ThreadGroup.scheduler">true</boolProp>     <!--调度器开关--> 
    <stringProp name="ThreadGroup.duration">300</stringProp>   <!--持续时间,sec为单位-->  
    <stringProp name="ThreadGroup.delay"></stringProp>         <!--启动延时,sec为单位-->
</ThreadGroup>

<!--http sample API--> 

<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP请求" enabled="true">
  <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
    <collectionProp name="Arguments.arguments">
      <elementProp name="" elementType="HTTPArgument">
        <boolProp name="HTTPArgument.always_encode">false</boolProp>
        <stringProp name="Argument.value">=</stringProp>
        <stringProp name="Argument.metadata">=</stringProp>
      </elementProp>
    </collectionProp>
  </elementProp>
  <stringProp name="HTTPSampler.domain">192.168.96.168</stringProp>    <!--服务器名称或者ip-->
  <stringProp name="HTTPSampler.port">80</stringProp>       <!--请求端口--> 
  <stringProp name="HTTPSampler.protocol">http</stringProp>         <!--请求协议--> 
  <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>     <!--内容编码--> 
  <stringProp name="HTTPSampler.path">web/ab.html</stringProp>      <!--请求路径--> 
  <stringProp name="HTTPSampler.method">GET</stringProp>        <!--请求方法-->
  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>     <!--跟随重定向开关-->
  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>      <!--自动重定向开关-->
  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>            <!--使用keepalive开关-->
  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>       <!--使用多个/表单数据进行发布-->
  <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
  <stringProp name="HTTPSampler.connect_timeout"></stringProp>    <!--连接超时--> 
  <stringProp name="HTTPSampler.response_timeout"></stringProp>   <!--响应超时-->
</HTTPSamplerProxy>
<stringProp name="HTTPSampler.domain">192.168.1.1</stringProp>
<stringProp name="HTTPSampler.port">8080</stringProp>
<stringProp name="HTTPSampler.protocol">http</stringProp>
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
<stringProp name="HTTPSampler.path">/api/v1/test</stringProp>
<stringProp name="HTTPSampler.method">POST</stringProp>

<!--easyNmon配置--> 

<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="执行监控" enabled="true">
    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
      <collectionProp name="Arguments.arguments"/>
    </elementProp>
    <stringProp name="HTTPSampler.domain">192.168.227.198</stringProp> <!--easyNmon IP-->
    <stringProp name="HTTPSampler.port">9999</stringProp>              <!--easyNmon 端口-->
    <stringProp name="HTTPSampler.protocol">http</stringProp>
    <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    <stringProp name="HTTPSampler.path">/start?n=${__strReplace(${__TestPlanName},.jmx,-,)}&amp;amp;t=10</stringProp>
    <stringProp name="HTTPSampler.method">GET</stringProp>
    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    <stringProp name="HTTPSampler.response_timeout"></stringProp>
</HTTPSamplerProxy>

五、运行

进入jmeter下的bin目录下运行脚本,未配置jmeter环境变量的条件下,运行的命令:

./jmeter -n -t a.jmx -l res.jtl

其中a.jmx是准备好的jmeter脚本,res.jtl是测试结果文件。

六、查看easyNmon报告 

登录 http://{easyNmon部署地址}:9999/report/,查看报告。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OneNote 中的云端字典在哪里? RoamingCustom.dic 在哪里?

早期懵懂不知&#xff0c;使用 OneNote 时直接将所有标红的单词添加到字典中了。后面才发现默认会添加到云端字典中。因为云端字典是存储在云端上的&#xff0c;所以 onenote 没有给出路径&#xff1a; 难道没办法获取了吗&#xff1f;有的&#xff01; 方案如下&#xff1a;考…

前端全栈必学的Dockerfile-ABC!

举个很简单的例子&#xff0c;我有一个Centos7的服务器&#xff0c;但是由于系统限制&#xff0c;我无法安装nodejs18… 但是&#xff01;我在Docker里就可以&#xff01; Dockerfile是Docker的心脏&#xff0c;一个文本文件&#xff0c;包含了一系列的指令&#xff0c;用来构…

机器学习----交叉熵(Cross Entropy)如何做损失函数

目录 一.概念引入 1.损失函数 2.均值平方差损失函数 3.交叉熵损失函数 3.1信息量 3.2信息熵 3.3相对熵 二.交叉熵损失函数的原理及推导过程 表达式 二分类 联立 取对数 补充 三.交叉熵函数的代码实现 一.概念引入 1.损失函数 损失函数是指一种将一个事件&#x…

Cubemx外部引脚按键中断

引脚配置&#xff1a; 时钟&#xff1a; 中断&#xff1a; 编写回调函数&#xff1a; 对函数void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)重写成用户自己的业务代码即可

期货交易的逻辑重要还是技术重要?

期货交易的逻辑重要还是技术重要&#xff1f; 我是一个从事交易多年的老交易员&#xff0c;我觉得这个问题很有意思&#xff0c;也很有难度。我认为交易的逻辑和技术都很重要&#xff0c;但是不是同等重要。我觉得逻辑是交易的灵魂&#xff0c;技术是交易的工具。没有逻辑&…

苹果手机更换国内IP地址的方法

在网络世界中&#xff0c;IP地址扮演着极为重要的角色&#xff0c;是互联网通信的基础。很多人在使用苹果手机时&#xff0c;有时候需要更换国内IP地址以获取更多网络资源或保护隐私。那么&#xff0c;是否可以更换国内ip地址&#xff1f;苹果手机更换国内ip地址的方法是怎样的…

Elasticsearch:ES|QL 入门 - Python Notebook

数据丰富在本笔记本中&#xff0c;你将学习 Elasticsearch 查询语言 (ES|QL) 的基础知识。 你将使用官方 Elasticsearch Python 客户端。 你将学习如何&#xff1a; 运行 ES|QL 查询使用处理命令对表格进行排序查询数据链式处理命令计算值计算统计数据访问列创建直方图丰富数…

360企业安全浏览器兼容模式显示异常某个内容不显示 偶发现象 本地无法复现情况js

360企业安全浏览器兼容模式显示异常 &#xff0c;现象测试环境频发 &#xff0c;本地连测试无法复现&#xff0c;线上反馈问题。 出现问题的电脑为windows且使用360企业安全浏览器打开兼容模式可复现 复现过程&#xff1a; 不直接点击超链接跳转页面 &#xff0c;登录后直接通…

ctf_show笔记篇(web入门---反序列化)

目录 反序列化 254&#xff1a;无用&#xff0c;是让熟悉序列化这个东西的 255&#xff1a;直接使$isViptrue 256&#xff1a;还是使用变量覆盖 257&#xff1a;开始使用魔法函数 258&#xff1a;将序列化最前面的过滤了&#xff0c;使用绕过 259: 这一题需要看writeup才…

uni-app攻略:如何对接驰腾打印机

一.引言 在当前的移动开发生态中&#xff0c;跨平台框架如uni-app因其高效、灵活的特点受到了开发者们的青睐。同时&#xff0c;随着物联网技术的飞速发展&#xff0c;智能打印设备已成为许多业务场景中不可或缺的一环。今天&#xff0c;我们就来探讨如何使用uni-app轻松对接驰…

全局过滤器实现Jwt校验

从Session到Jwt 之前我写过一篇 什么是 httpsession &#xff1a; 理解HttpSession 在经典的那个登录场景中&#xff1a; 客户端第一次访问的时候 需要登录 登录成功之后 后面再次访问的时候 为了让服务器认识 这是已经登录成功的我 在session中存储的用户的信息。 现在我…

按摩师C语言

题干出现“接或不接”,“最优”&#xff0c;仔细一想&#xff0c;该用动态规划了。 #include<stdio.h> int max(int a,int b) {if(a>b)return a;elsereturn b; } int massage(int* nums,int numSize) {if(numSize 0)return 0;else if(numSize 1)return nums[0];els…

面试笔记——MySQL(主从同步原理、分库分表)

主从同步原理 主从同步结构&#xff1a;主库负责写数据&#xff0c;从库负责读数据&#xff0c;如图—— MySQL主从复制的核心就是二进制日志&#xff08;BINLOG&#xff09;&#xff0c;它记录了所有的 DDL&#xff08;数据定义语言&#xff09;语句和 DML&#xff08;数据操…

php表单生成器系统下载 全新万能自定义表单系统源码 开源可二开

在数字化时代&#xff0c;表单系统是许多网站和应用不可或缺的一部分。为了满足不同场景下的需求&#xff0c;分享一个全新万能自定义表单系统源码&#xff0c;基于PHP开发&#xff0c;具有高度的灵活性和可扩展性&#xff0c;支持设置收费表单在线提交&#xff0c;比如说&…

Unity类银河恶魔城学习记录11-3 p105 Inventory UI源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_itemSlot.cs using System.Collections; using System.Collections.Gen…

JAVA八股--集合面试题

AVA八股--集合面试题--上 java只有值传递&#xff0c;没有引用传递代理模式Java之HashMap和Hashtable选用 ArrayDeque 来实现队列要比 LinkedList 更好为什么HashMap的长度一定是2的次幂&#xff1f;HashMap常见遍历方式 java只有值传递&#xff0c;没有引用传递 文章讲解 文…

全面放开的主流电商API接口,跨境电商与您“面对面”

通过 API&#xff0c;一个软件可以向另一个软件请求数据、执行操作或者提供服务。比如&#xff0c;当你使用手机上的天气应用程序时&#xff0c;它可能通过调用天气预报 API 来获取实时天气数据。又或者&#xff0c;当你在社交媒体上分享照片时&#xff0c;这个应用程序可能使用…

transformer的学习:Attention is all you need

目录 整体概述&#xff1a;​编辑​编辑 encoder&#xff1a; embedding&#xff1a; ​编辑 self-attention&#xff1a; 向量的相似度计算&#xff1a; qkv怎么来的​编辑 softmax&#xff1a; code multi-head-attention 位置编码&#xff1a; 残差&&FFN&…

基于react native的自定义轮播图

基于react native的自定义轮播图 效果示例图示例代码 效果示例图 示例代码 import React, {useEffect, useRef, useState} from react; import {Animated,PanResponder,StyleSheet,Text,View,Dimensions, } from react-native; import {pxToPd} from ../../common/js/device;c…

8个 C++ 开源项目,帮初学者快速进阶

参与或阅读开源项目的源代码&#xff0c;可以获得丰富的实践机会。下面&#xff0c;让我们一起看看以下八个优秀的 C 开源项目。 通过参与或阅读开源项目的源代码&#xff0c;你可以获得丰富的实践机会。实际的项目代码比简单的教程更具挑战性&#xff0c;可以帮助你深入理解 …