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_HOMEalias 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.internalserver 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 mainimport ("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 mainimport ("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.rhkb.cn/news/279557.html

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

相关文章

软考 网工 每日学习打卡 2024/3/18

学习内容 第8章 网络安全 本章主要讲解网络安全方面的基础知识和应用技术。针对考试应该掌握诸如数据加密、报文认 证、数字签名等基本理论,在此基础上深入理解网络安全协议的工作原理,并能够针对具体的 网络系统设计和实现简单的安全解决方案。 本章共有…

深入理解Java并发工具包中的CyclicBarrier

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在Java的并发编程世界中,协调和管理多个线程的执行是一项复杂而关键的任务。为了简化这一挑战,Java并发包…

三种简单方法教你手机mp4怎么转换成mp3!

在日常生活中,我们经常会遇到想要将手机上的MP4视频转换为MP3音频的情况。可能是想要提取音频内容,例如歌曲或录音,方便在其他设备上播放或分享;也可能是为了节省手机存储空间,将视频文件转换为更小的音频文件。 无论…

【HTTP完全注解】看了还搞不懂缓存你直接来打我

HTTP缓存 HTTP缓存是一种HTTP的性能优化机制,它是为了提高Web页面加载速度和减轻服务器负载而设计的,通过这种机制,Web浏览器或其他客户端可以存储先前获取的Web资源的副本,并在后续请求相同资源时使用这些副本,而不是…

Java学习笔记21——使用JDBC访问MySQL数据库

JDBC(Java Database Connectivity,Java数据库连接)是应用程序编程借口(API),描述了一套访问关系数据库的标准Java类库。可以在程序中使用这些API,连接到关系数据库,执行SQL语句&…

【技术栈】Redis 中的事务及持久化方式

SueWakeup 个人主页: SueWakeup 系列专栏:学习技术栈 个性签名:保留赤子之心也许是种幸运吧 本文封面由 凯楠📸 友情提供 目录 相关传送门 1. Redis 中的事务 2. Redis 持久化 2.1 RDB 方式 2.1.1 RDB手动 2.1.2 RDB自动 2.…

跨越时空的纽带:探索Facebook如何连接人与人

引言 Facebook作为全球最大的社交媒体平台之一,已经成为了人们日常生活中不可或缺的一部分。它不仅仅是一个社交网络,更是连接人与人、人与世界的纽带。在这篇文章中,我们将深入探讨Facebook如何跨越时空,连接人与人之间的关系&a…

Flutter 初始WidgetState 简单应用案例分析

本系列文章主要整理Flutter的知识汇总,由浅入深,从Widget的搭建到其中的原理。本文还是围绕Widget在开发中应用和理解。 关于Flutter环境配置和首次创建可以参考前面文章。链接如下: Flutter 安装部署与认识Dart语言 Flutter 使用AndroidS…

Spring Cloud 整合 GateWay

目录 第一章 微服务架构图 第二章 Spring Cloud整合Nacos集群 第三章 Spring Cloud GateWay 第四章 Spring Cloud Alibaba 整合Sentinel 第五章 Spring Cloud Alibaba 整合SkyWalking链路跟踪 第六章 Spring Cloud Alibaba 整合Seata分布式事务 第七章 Spring Cloud 集成Auth用…

多模匹配算法AC算法和单模匹配算法BM

多模匹配算法之AC算法详解 算法概述  Aho-Corasick算法 - 这是一种字典匹配算法,它用于在输入文本中查找字典中的字符串。时间复杂度是线性的。该算法应用有限自动机巧妙地将字符比较转化为了状态转移。  该算法的基本思想 − 在预处理阶段,AC自动机算法建立…

Springboot通过注解+切面实现接口权限校验

Springboot通过注解+切面实现接口权限校验 主要说一下在对接口请求时,如何用注解切面去拦截校验当前登录用户是否有访问权限 1.首先创建注解 HasPermission ,跟普通注解创建方式基本一致 Retention(RetentionPolicy.RUNTIME) Target(Element…

小火星露谷管理器 报错:“你似乎没有安装Edge的webview2”

错误 解决办法 你可以到这个地方下载安装webview2 https://developer.microsoft.com/zh-cn/microsoft-edge/webview2/?formMT00IS

2024年亚洲图像处理趋势会议(ATIP 2024)即将召开!

2024年亚洲图像处理趋势会议(简称:ATIP 2024)将于2024年6月21日至23日在英国伦敦举行。在会议上我们将与相关领域的研究人员和知名专业人士共同讨论关于图像处理学科的最新研究方向及进展,评估当前最先进的技术和未来研究的关键领…

Tomcat(Win+Linux)安装教程

Windows环境安装 Tomcat安装及配置教程主要分为四步: 步骤一:确认自己是否已 安装JDK🔍 步骤二:下载安装Tomcat 步骤三:Tomcat配置环境变量 步骤四:验证Tomcat配置是否成功 OK,我们开始&#x…

数据库基本介绍及编译安装mysql

目录 数据库介绍 数据库类型 数据库管理系统(DBMS) 数据库系统 DBMS的工作模式 关系型数据库的优缺点 编译安装mysql 数据库介绍 数据:描述事物的的符号纪录称为数据(Data) 表:以行和列的形式组成…

python大学生健身爱好者交流网站flask-django-nodejs-php

任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于python技术、django/flask框架、B/S机构、Mysql数据…

【No.13】蓝桥杯二分查找|整数二分|实数二分|跳石头|M次方根|分巧克力(C++)

二分查找算法 知识点 二分查找原理讲解在单调递增序列 a 中查找 x 或 x 的后继在单调递增序列 a 中查找 x 或 x 的前驱 二分查找算法讲解 枚举查找即顺序查找, 实现原理是逐个比较数组 a[0:n-1] 中的元素,直到找到元素 x 或搜索整个数组后确定 x 不在…

linux网络服务学习(1):nfs

1.什么是nfs NFS:网络文件系统。 *让客户端通过网络访问服务器磁盘中的数据,是一种在linux系统间磁盘文件共享的方法。 *nfs客户端可以把远端nfs服务器的目录挂载到本地。 *nfs服务器一般用来共享视频、图片等静态数据。一般是作为被读取的对象&…

国内git最新版本下载链接2.44

git官网地址:Git - Downloading Package (git-scm.com) 蓝奏云: ​​​​​​gGit-2.44.0-64-bit.exe - 蓝奏云 git仓库地址:git/git: Git Source Code Mirror - This is a publish-only repository but pull requests can be turned into patches to the mailing list via …

算法笔记p251队列循环队列

目录 队列循环队列循环队列的定义初始化判空判满入队出队获取队列内元素的个数取队首元素取队尾元素 队列 队列是一种先进先出的数据结构,总是从队尾加入元素,从队首移除元素,满足先进先出的原则。队列的常用操作包括获取队列内元素的个数&a…