Mac版Jmeter安装与使用模拟分布式环境

Mac版Jmeter安装与使用&模拟分布式环境

1 安装Jmeter

1.1 安装Java环境

国内镜像地址:https://repo.huaweicloud.com/java/jdk/11.0.2+9/jdk-11.0.2_osx-x64_bin.dmg

在这里插入图片描述
下载dmg后,双击进行安装。

配置环境变量:

# 1 打开环境变量配置文件
open ~/.bash_profile

# 2 在最后一行插入
export JAVA_11_HOME=`/usr/libexec/java_home -v 11` 

export JAVA_HOME=$JAVA_11_HOME

alias jdk11="export JAVA_HOME=$JAVA_11_HOME"

# 3 刷新配置文件
source ~/.bash_profile

# 4 查看配置是否生效
java -version

在这里插入图片描述

1.2 下载安装Jmeter

①官网下载安装包:https://jmeter.apache.org/download_jmeter.cgi
在这里插入图片描述

②下载完成后,直接解压
在这里插入图片描述

  • bin:Jmeter可执行文件

  • docs:包含用户指南等文档。

  • extras:包含各种使用样例。

  • lib:该目录包含 Jmeter 所需的 JAR 包(也可以添加其他的 JAR 包)。

  • printable_docs:里面是一些可打印的文件。

③启动Jmeter

进入bin目录,执行sh jmeter

在这里插入图片描述

1.3 插件安装(可选)

插件地址:https://jmeter-plugins.org/wiki/Start/

  • TPS:Transactions Per Second 也就是事务数/秒
  • QPS:QPS Queries Per Second 是每秒查询率,是一台服务器 每秒能够相应的查询次数,是对一个特定的查询服务器 在规定时间内 所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。

Jmeter默认的图表比较简单。大家可根据需要自行安装插件。

以安装TPS插件为例:

  1. 来到官网,搜索插件名,点击
    在这里插入图片描述
  2. 点击Download
    在这里插入图片描述3. 点击版本号,进行下载
    在这里插入图片描述

下载后,我们解压后放到jmeter的安装目录的相同位置,如:

  1. lib目录下的就放到apache-jmeter-3.0\lib下
  2. ext下的就放到apache-jmeter-3.0\lib\ext\ 下,
  3. 重新启动Jmeter。

1.4 使用

详情用法参考:https://editor.csdn.net/md/?articleId=127047200

步骤:创建测试计划-创建线程组(设置并发数)- 创建HTTP请求

观测结果:
在这里插入图片描述

2 本地模拟分布式环境:nginx+iris web服务

思路:

  1. docker启nginx,nginx配置:server_name ziyi.com,当拦截ziyi.com服务并转发给(本地8888和9999两个服务):
    server docker.for.mac.host.internal:8888;
    server docker.for.mac.host.internal:9999;
  2. 本地配置域名解析:sudo vim /etc/hosts。添加解析记录:
    127.0.0.1 ziyi.com
  3. docker启动nginx
  4. 启动两个iris web服务,分别为8888和9999端口

2.1 安装docker

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum install docker
systemctl start docker

2.2 安装配置nginx

①nginx.conf

以mac版本为例:因为nginx是在mac版的docker上跑的,所以可以通过 docker.for.mac.host.internal指向我mac宿主机,保证nginx转发请求到宿主机(mac),实现负载均衡。

  • 大家也可以通过create docker网络实现docker中的nginx转发到宿主机
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    upstream backend_consume {
        # mac下的docker有加一层虚拟机,所以无法直接访问,需要使用docker.for.mac.host.internal
        server docker.for.mac.host.internal:8888 weight=1;
        server docker.for.mac.host.internal:9999 weight=1;
        # server 127.0.0.1:8888; # 第一个服务
        # server 127.0.0.1:9999; # 第二个服务

        # 如果要实现更高级的负载均衡策略,比如轮询、权重等,可以在这里添加相应配置
        # 比如:
        # least_conn; # 最小连接数分配
        # ip_hash;    # 根据客户端IP进行哈希一致性分配
    }

    server {
        listen 80;

        server_name ziyi.com;

        location / {
            proxy_pass http://backend_consume/consume;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         	add_header 'Access-Control-Allow-Origin' '*';
         	add_header 'Access-Control-Allow-Credentials' 'true';
        }
    }
}
②docker启动nginx
docker run -d \
--name nginx \
-v /Users/ziyi2/docker-home/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /Users/ziyi2/docker-home/nginx:/var/log/nginx \
-p 80:80 nginx
③启动两个iris web服务

svc1:

package main

import (
	"github.com/kataras/iris/v12"
	context2 "github.com/kataras/iris/v12/context"
)

func main() {
	app := iris.New()
	app.Get("/consume", func(c *context2.Context) {
		c.JSON("ok port:8888")
	})
	app.Use(Cors)
	app.Listen(":8888", nil)
}

func Cors(ctx iris.Context) {
	ctx.Header("Access-Control-Allow-Origin", "*")
	ctx.Header("Access-Control-Allow-Credentials", "true")
	ctx.Next()
}

svc2:

package main

import (
	"github.com/kataras/iris/v12"
	context2 "github.com/kataras/iris/v12/context"
)

func main() {
	app := iris.New()
	app.Get("/consume", func(c *context2.Context) {
		c.JSON("ok port:9999")
	})
	app.Use(Cors)
	app.Listen(":9999", nil)
}

func Cors(ctx iris.Context) {
	ctx.Header("Access-Control-Allow-Origin", "*")
	ctx.Header("Access-Control-Allow-Credentials", "true")
	ctx.Next()
}
观察:

配置20个并发:
在这里插入图片描述

新建请求,填写域名及路径:
在这里插入图片描述

后台打印日志,应该是8888一次、9999一次,出现负载均衡,交替打印

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【leetcode热题】 地下城游戏

恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0…

前端面试02(JS)

文章目录 前端面试02(JS)1、js的组成2、js内置对象3、操作数组的方法4、数据类型的检测方法5、闭包是什么6、前端内存泄漏7、事件委托8、基本数据类型和引用数据类型9、原型链10、JS如何实现继承 🎉写在最后 前端面试02(JS&#x…

AI短视频制作一本通:文本生成视频、图片生成视频、视频生成视频

第一部分:文本生成视频 1. 文本生成视频概述 随着人工智能(AI)技术的飞速发展,视频制作领域也迎来了创新的浪潮。文本生成视频是其中的一项令人激动的进展,它利用自然语言处理技术将文本内容转化为视频。这项技术在广…

element-ui出的treeselect下拉树组件基本使用,以及只能选择叶子节点的功能,给节点添加按钮操作

element-ui出的treeselect下拉树组件基本使用:Vue通用下拉树组件riophae/vue-treeselect的使用-CSDN博客 vue-treeselect 问题合集、好用的树形下拉组件(vue-treeselect的使用、相关问题解决方案)-CSDN博客 需求1:treeselect下拉…

Bert的一些理解

Bert的一些理解 Masked Language Model (MLM)Next Sentence Prediction (NSP)总结 参考链接1 参考链接2 BERT 模型的训练数据集通常是以预训练任务的形式来构建的,其中包括两个主要任务:Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。…

【Python】Miniconda+Vscode+Jupyter 环境搭建

1.安装 Miniconda Conda 是一个开源的包管理和环境管理系统,可在 Windows、macOS 和 Linux 上运行,它可以快速安装、运行和更新软件包及其依赖项。使用 Conda,我们可以轻松在本地计算机上创建、保存、加载和切换不同的环境 Conda 分为 Anaco…

MyBatis记录

目录 什么是MyBatis MyBatis的优点和缺点 #{}和${}的区别 Mybatis是如何进行分页的,分页插件的原理 Mybatis是如何将sql执行结果封装为目标对象并返回的 MyBatis实现一对一有几种方式 Mybatis设计模式 什么是MyBatis (1)Mybatis是一个…

【鸿蒙系统】 ---Harmony 鸿蒙编译构建指导(一)

💌 所属专栏:【鸿蒙系统】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢…

一文全面了解 wxAUI 界面库

目录 wxAUI 简介 框架管理 工具栏 非模态控件 外观和风格 wxAUI 简介 wxAUI 代表高级用户界面 (Advanced User Interface)。 它的目标是为用户提供一个前沿的界面,具有可浮动的窗口和可自定义的布局。最初的 wxAUI 源代码由 Kirix Corp.慷慨地提供&#xff0…

MNN createSession 之创建流水线后端(四)

系列文章目录 MNN createFromBuffer(一) MNN createRuntime(二) MNN createSession 之 Schedule(三) MNN createSession 之创建流水线后端(四) MNN Session::resize 之流水线编码&am…

在openSUSE-Leap-15.5-DVD-x86_64中使用微信wechat-beta-1.0.0.238

在openSUSE-Leap-15.5-DVD-x86_64中使用微信wechat-beta-1.0.0.238 参考文章: 《重磅!微信(Universal)UOS版迎来全新升级丨统信应用商店上新 》统信软件 2024-03-13 17:45 北京 https://mp.weixin.qq.com/s/VSxGSAPTMPH4OGvGSilW…

初探Springboot 参数校验

文章目录 前言Bean Validation注解 实践出真知异常处理 总结 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 前言 工作中我们经常会遇到验证字段是否必填,或者字段的值是否…

[Python人工智能] 四十三.命名实体识别 (4)利用bert4keras构建Bert+BiLSTM-CRF实体识别模型

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解如何实现中文命名实体识别研究,构建BiGRU-CRF模型实现。这篇文章将继续以中文语料为主,介绍融合Bert的实体识别研究,使用bert4keras和kears包来构建Bert+BiLSTM-CRF模型。然而,该代码最终结…

轻松解锁微博视频:基于Perl的下载解决方案

引言 随着微博成为中国最受欢迎的社交平台之一,其内容已经变得丰富多彩,特别是视频内容吸引了大量用户的关注。然而,尽管用户对微博上的视频内容感兴趣,但却面临着无法直接下载这些视频的难题。本文旨在介绍一个基于Perl的解决方…

Unity Toggle处理状态变化事件

Toggle处理状态变化事件,有两个方法。 法一、通过Inspector面板设置 实现步骤: 在Inspector面板中找到Toggle组件的"On Value Changed"事件。单击""按钮添加一个新的监听器。拖动一个目标对象到"None (Object)"字段&am…

pytorch单层感知机

目录 1.单层感知机模型2. 推导单层感知机梯度3. 实战 1.单层感知机模型 2. 推导单层感知机梯度 公式前加了一个1/2是为了消除平方2,不加也是可以的,不会改变函数的单调性 3. 实战 初始化1行10列的x和wsigmod中xw.t() w做了转置操作是为了将[1,10]转换…

webpack5零基础入门-12搭建开发服务器

1.目的 每次写完代码都需要手动输入指令才能编译代码,太麻烦了,我们希望一切自动化 2.安装相关包 npm install --save-dev webpack-dev-server 3.添加配置 在webpack.config.js中添加devServer相关配置 /**开发服务器 */devServer: {host: localhos…

[OpenCV学习笔记]获取鼠标处图像的坐标和像素值

目录 1、介绍2、效果展示3、代码实现4、源码展示 1、介绍 实现获取鼠标点击处的图像的坐标和像素值&#xff0c;灰度图显示其灰度值&#xff0c;RGB图显示rgb的值。 OpenCV获取灰度值及彩色像素值的方法&#xff1a; //灰度图像&#xff1a; image.at<uchar>(j, i) //j…

.NET 异步编程(异步方法、异步委托、CancellationToken、WhenAll、yield)

文章目录 异步方法异步委托async方法缺点CancellationTokenWhenAllyield 异步方法 “异步方法”&#xff1a;用async关键字修饰的方法 异步方法的返回值一般是Task<T>&#xff0c;T是真正的返回值类型&#xff0c;Task<int>。惯例&#xff1a;异步方法名字以 Asy…

【保姆级】前端使用node.js基础教程

文章目录 安装和版本管理&#xff1a;npm 命令&#xff08;Node 包管理器&#xff09;&#xff1a;运行 Node.js 脚本&#xff1a;调试和开发工具&#xff1a;其他常用命令&#xff1a;模块管理&#xff1a;包管理&#xff1a;调试工具&#xff1a;异步编程和包管理&#xff1a…
最新文章