金歌 发表于 2024-6-14 21:33:08

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
https://img-blog.csdnimg.cn/direct/4aae588f9e244014a59b357d97c8cd68.png
下载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
https://img-blog.csdnimg.cn/direct/5990dcf3eb434dafb706b7a68d3f4835.png
1.2 下载安装Jmeter

①官网下载安装包:https://jmeter.apache.org/download_jmeter.cgi
https://img-blog.csdnimg.cn/direct/583b7a0facf74f6fb9f885f98f4a24b8.png
②下载完成后,直接解压
https://img-blog.csdnimg.cn/direct/53e4076f16f14042b8570e8f80b75a39.png


[*] bin:Jmeter可执行文件
[*] docs:包含用户指南等文档。
[*] extras:包含各种使用样例。
[*] lib:该目录包含 Jmeter 所需的 JAR 包(也可以添加其他的 JAR 包)。
[*] printable_docs:里面是一些可打印的文件。
③启动Jmeter
   进入bin目录,执行sh jmeter
https://img-blog.csdnimg.cn/direct/56cbf4abbbbd45d09905da065d8e0ec9.png
1.3 插件安装(可选)

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


[*]TPS:Transactions Per Second 也就是事件数/秒
[*]QPS:QPS Queries Per Second 是每秒查询率,是一台服务器 每秒能够相应的查询次数,是对一个特定的查询服务器 在规定时间内 所处置惩罚流量多少的衡量尺度, 即每秒的响应请求数,也即是最大吞吐能力。
Jmeter默认的图表比较简单。大家可根据必要自行安装插件。
   以安装TPS插件为例:

[*]来到官网,搜刮插件名,点击
https://img-blog.csdnimg.cn/direct/565633e2ab0d4c1798b4f1678a881ce5.png
[*]点击Download
https://img-blog.csdnimg.cn/direct/967814795b0b4447b1fe5acee09f8286.png3. 点击版本号,举行下载
https://img-blog.csdnimg.cn/direct/862a0f3e26004f6f8fa3e30997179f94.png
    下载后,我们解压后放到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请求
观测效果:
https://img-blog.csdnimg.cn/direct/8e0dc3cbfff94fffa291367f1acc76a4.png
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

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_typeapplication/octet-stream;

    log_formatmain'$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.logmain;

    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个并发:
https://img-blog.csdnimg.cn/direct/4f98f3855ed741e1a218b427d83b567a.png
新建请求,填写域名及路径:
https://img-blog.csdnimg.cn/direct/780aa90a73704e0eb1b679cb41b3d8a6.png
   后台打印日记,应该是8888一次、9999一次,出现负载平衡,瓜代打印

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Mac版Jmeter安装与使用&模仿分布式环境