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

金歌  金牌会员 | 2024-6-14 21:33:08 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 580|帖子 580|积分 1740

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. # 1 打开环境变量配置文件
  2. open ~/.bash_profile
  3. # 2 在最后一行插入
  4. export JAVA_11_HOME=`/usr/libexec/java_home -v 11`
  5. export JAVA_HOME=$JAVA_11_HOME
  6. alias jdk11="export JAVA_HOME=$JAVA_11_HOME"
  7. # 3 刷新配置文件
  8. source ~/.bash_profile
  9. # 4 查看配置是否生效
  10. 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插件为例:
  

  • 来到官网,搜刮插件名,点击

  • 点击Download
    3. 点击版本号,举行下载

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

  • lib目录下的就放到apache-jmeter-3.0\lib下
  • ext下的就放到apache-jmeter-3.0\lib\ext\ 下,
  • 重新启动Jmeter。
  1.4 使用

   详情用法参考:https://editor.csdn.net/md/?articleId=127047200
  步调:创建测试操持-创建线程组(设置并发数)- 创建HTTP请求
观测效果:

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

   思路:
  

  • 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;
  • 本地设置域名解析:sudo vim /etc/hosts。添加解析记载:
    127.0.0.1 ziyi.com
  • docker启动nginx
  • 启动两个iris web服务,分别为8888和9999端口
  2.1 安装docker

  1. yum install -y yum-utils
  2. yum-config-manager \
  3.     --add-repo \
  4.     https://download.docker.com/linux/centos/docker-ce.repo
  5. yum install docker
  6. systemctl start docker
复制代码
2.2 安装设置nginx

①nginx.conf

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

  • 大家也可以通过create docker网络实现docker中的nginx转发到宿主机
  1. user nginx;
  2. worker_processes auto;
  3. error_log /var/log/nginx/error.log warn;
  4. pid /var/run/nginx.pid;
  5. events {
  6.     worker_connections 1024;
  7. }
  8. http {
  9.     include       /etc/nginx/mime.types;
  10.     default_type  application/octet-stream;
  11.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  12.                       '$status $body_bytes_sent "$http_referer" '
  13.                       '"$http_user_agent" "$http_x_forwarded_for"';
  14.     access_log  /var/log/nginx/access.log  main;
  15.     upstream backend_consume {
  16.         # mac下的docker有加一层虚拟机,所以无法直接访问,需要使用docker.for.mac.host.internal
  17.         server docker.for.mac.host.internal:8888 weight=1;
  18.         server docker.for.mac.host.internal:9999 weight=1;
  19.         # server 127.0.0.1:8888; # 第一个服务
  20.         # server 127.0.0.1:9999; # 第二个服务
  21.         # 如果要实现更高级的负载均衡策略,比如轮询、权重等,可以在这里添加相应配置
  22.         # 比如:
  23.         # least_conn; # 最小连接数分配
  24.         # ip_hash;    # 根据客户端IP进行哈希一致性分配
  25.     }
  26.     server {
  27.         listen 80;
  28.         server_name ziyi.com;
  29.         location / {
  30.             proxy_pass http://backend_consume/consume;
  31.             proxy_set_header Host $host;
  32.             proxy_set_header X-Real-IP $remote_addr;
  33.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  34.                  add_header 'Access-Control-Allow-Origin' '*';
  35.                  add_header 'Access-Control-Allow-Credentials' 'true';
  36.         }
  37.     }
  38. }
复制代码
②docker启动nginx

  1. docker run -d \
  2. --name nginx \
  3. -v /Users/ziyi2/docker-home/nginx/nginx.conf:/etc/nginx/nginx.conf \
  4. -v /Users/ziyi2/docker-home/nginx:/var/log/nginx \
  5. -p 80:80 nginx
复制代码
③启动两个iris web服务

svc1:
  1. package main
  2. import (
  3.         "github.com/kataras/iris/v12"
  4.         context2 "github.com/kataras/iris/v12/context"
  5. )
  6. func main() {
  7.         app := iris.New()
  8.         app.Get("/consume", func(c *context2.Context) {
  9.                 c.JSON("ok port:8888")
  10.         })
  11.         app.Use(Cors)
  12.         app.Listen(":8888", nil)
  13. }
  14. func Cors(ctx iris.Context) {
  15.         ctx.Header("Access-Control-Allow-Origin", "*")
  16.         ctx.Header("Access-Control-Allow-Credentials", "true")
  17.         ctx.Next()
  18. }
复制代码
svc2:
  1. package main
  2. import (
  3.         "github.com/kataras/iris/v12"
  4.         context2 "github.com/kataras/iris/v12/context"
  5. )
  6. func main() {
  7.         app := iris.New()
  8.         app.Get("/consume", func(c *context2.Context) {
  9.                 c.JSON("ok port:9999")
  10.         })
  11.         app.Use(Cors)
  12.         app.Listen(":9999", nil)
  13. }
  14. func Cors(ctx iris.Context) {
  15.         ctx.Header("Access-Control-Allow-Origin", "*")
  16.         ctx.Header("Access-Control-Allow-Credentials", "true")
  17.         ctx.Next()
  18. }
复制代码
观察:

设置20个并发:

新建请求,填写域名及路径:

   后台打印日记,应该是8888一次、9999一次,出现负载平衡,瓜代打印

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表