美文网首页java 设计
Jmeter压测笔记

Jmeter压测笔记

作者: SetZero | 来源:发表于2019-04-10 16:32 被阅读260次

中文界面设置

  • 修改bin/jmeter.properties文件,将language设置为zh_CN
    #Preferred GUI language. Comment out to use the JVM default locale's language.
    language=zh_CN
    

利用jmeter代理服务器进行脚本录制

  1. 测试计划中添加线程组
  • 线程数:就是模仿用户并发的数量,Ramp-up:运行线程的总时间,单位是秒,循环次数:就是每个线程循环多少次。
  • 我现在的线程数是200,就是相当于有200个用户,运行线程的总时间是10秒。也就是说在这10秒中之内200个用户同时访问,一秒钟有20个用户同时访问,每个用户循环一次,也就是访问一次。


  1. 测试计划中添加非测试元件http代理服务器
  2. 端口(代理服务器监听端口):可另外设置端口,默认8888
  • 目标控制器:测试计划 > 线程组
  • 分组:每个组放入一个新的控制器
  • 勾选:记录HTTP信息头
  1. http代理服务器:
  • 添加过滤条件:(?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2|svg|ttf)
  1. 打开浏览器,网络设置,将局域网设置中的代理服务器设为localhost,端口设置为8888
  2. 代理服务器配置后之后,点击HTTP代理服务器启动按钮,代理服务器就会开始记录所接受的http请求
  3. 在浏览器地址栏输入需要测试的地址并进行相关操作,完成第一组录制
  4. 得到第一组录制的结果后,将任意一个请求的HTTP信息头管理器移至测试计划线程组使其成为全局HTTP信息头管理器
  5. HTTP代理服务器中取消勾选:记录HTTP信息头,重启HTTP代理服务器
  6. 删除录制的第一组信息,重新进行录制
  7. 脚本录制完毕,处理一下HTTP信息头管理器,添加或修改需要的信息头后即可开始进行压测

远程测试

  • 部署从节点

    apiVersion: v1
    kind: Service
    metadata:
      name: jmeter
    spec:
      clusterIP: None
      ports:
      - port: 1099
        name: server
      selector:
        app: jmeter
    ---
    apiVersion: apps/v1beta1
    kind: StatefulSet
    metadata:
      name: jmeter
      labels:
        app: jmeter
    spec:
      serviceName: jmeter
      replicas: 5
      selector:
        matchLabels:
          app: jmeter
      template:
        metadata:
          labels:
            app: jmeter
        spec:
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
              - labelSelector:
                  matchExpressions:
                  - key: app
                    operator: In
                    values:
                    - jmeter
                topologyKey: "kubernetes.io/hostname"
          containers:
          - name: jmeter
            image: justb4/jmeter:5.1.1
            ports:
            - name: server
              containerPort: 1099
            - name: rmi
              containerPort: 20000
            env:
            - name: RMI_HOST
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            command:
            - jmeter-server
            args:
            - -Dserver.rmi.ssl.disable=true
            - -Djava.rmi.server.hostname=$(RMI_HOST)
    
  • 运行控制端

    kubectl run jmeter-master --image=justb4/jmeter:5.1.1 -it --restart=Never --command -- bash
    
  • 另开窗口,将保存的脚本复制到jmeter-master pod中

    kubectl cp self.jmx jmeter-master:/
    
  • 在控制端,执行压测

    jmeter -Dserver.rmi.ssl.disable=true \
        -n \
        -t /self.jmx \
        -l /result.jtl \
        -R jmeter-0.jmeter.jmeter.svc,jmeter-1.jmeter.jmeter.svc,jmeter-2.jmeter.jmeter.svc,jmeter-3.jmeter.jmeter.svc,jmeter-4.jmeter.jmeter.svc
    
  • 另开窗口,保存压测结果

    kubectl cp jmeter-master:/result.jtl .
    
  • 将压测报告导成html

    jmeter -g result.jtl -o result
    

相关文章

网友评论

    本文标题:Jmeter压测笔记

    本文链接:https://www.haomeiwen.com/subject/gjwyiqtx.html