美文网首页
记一次性能测试过程

记一次性能测试过程

作者: 取名好费劲 | 来源:发表于2021-03-18 16:56 被阅读0次

    由于公司项目做了巨大改动,需要重新测试性能,下面记录本次测试的过程:

    1.准备环境

    测试需要公司开阿里云机器测试花钱的,所以先在本地把数据准备好

    1. 测试数据
      • 生成账户数据,使用jar包生成
      • 再使用jar 生成payment 和insert 的签名数据
    2. jmeter工具
      打包Jmeter 镜像,先在本地创建一个目录jmeter_docker ,里面放jmeter文件夹,如下图:


      jmeter_docker.png

      创建一个Dockerfile文件,Dockerfile脚本如下:

    FROM java:8
    # 基础java版本
    MAINTAINER cctester
    # 作者
    ENV http_proxy ""
    ENV https_proxy ""
    RUN mkdir /test && \
      chmod -R 777 /test
    # 创建/test目录,用于存放jmx脚本、jtl结果文件、html测试报告文件
    ENV JMETER_VERSION=5.2.1
    ENV JMETER_HOME=/usr/local/apache-jmeter-${JMETER_VERSION}
    ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH}
    ENV PATH=${JMETER_HOME}/bin:${PATH}
    # 设置JMeter环境变量
    ADD apache-jmeter-${JMETER_VERSION}.tgz /usr/local
    # 添加JMeter
    RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
      echo "Asia/Shanghai" > /etc/timezone
    

    再制作Jmeter镜像

    执行命令  docker build -t jmeter .    
    注意不要忽略最后点
    
    打完查看镜像,执行 docker images 
    
    再将JMeter 镜像保存本地
    docker save -o  jmeter.tar  jmeter:latest
    
    把 Jmeter.tar 复制到压测机器上,执行导入镜像
    docker load  -i jmeter.tar 即可
    
    
    1. 监控工具

    本次性能测试采用node_exporter+promethus+granfan监控节点机器
    使用jmeter+influxdb+granfan显示jmeter数据,都采用docker-compose方式来安装

    docker_compose文件如下:

    version: '2'
      
    services:
        prometheus:
            image: prom/prometheus
            container_name: prometheus
            hostname: prometheus
            restart: always
            volumes:
                - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
                # - ./node_down.yml:/etc/prometheus/node_down.yml
            ports:
                - "9090:9090"
            networks:
                - kong_net
       grafana:
            image: grafana/grafana
            container_name: grafana
            hostname: grafana
            restart: always
            ports:
                - "3000:3000"
            networks:
                - kong_net
      influxdb:
            image: influxdb:1.8.4-alpine
            container_name: influxdb
            ports:
                - "8083:8083"
                - "8086:8086"
                - "8090:8090"
    
     networks:
        kong_net:
    

    2.测试过程

    1. 先安装测试机上的Docker环境
    进入机器上,先执行如下命令:
    
    apt-get update
    apt-get upgrade
    apt install docker.io
    安装docker后,执行docker -v可查看版本号
    
    再安装docker-compose 一般执行
    https://get.daocloud.io  
    这个网址里面的命令就可以,但是测试的机器报443 不得已解决,直接将docker-compose 拷贝到节点机器的/usr/local/bin 目录下 
    
    

    进入docker_compose 目录下,执行 docker_compose up -d 命令启动promethus+grafana+influxdb容器

    • 由于jmeter需要将数据写入influxdb中,需要先创建好数据库,如下步骤:
      进入influxdb 容器中,创建数据库myDB 以便于jmeter写入数据
    influxdb容器.png
    • 再需要先下载一个jmeter influxdb的插件,放到jmeter目录下的lib/ext目录下


      influxdb lib.png
    • jmeter 需要添加一个后置监听器


      image.png
    • 节点所在机器上需要启动node_exporter容器,监控节点资源,docker_compose文件内容如下:
    version: '2'
      
    services:
        node-exporter:
            image: prom/node-exporter
            container_name: node-exporter
            hostname: node-exporter
            restart: always
            ports:
                - "9100:9100"
        mysql:
            image: mysql:5.7
            container_name: mysql
            environment:
                MYSQL_ROOT_PASSWORD: "root"
                MYSQL_USER: 'test'
                MYSQL_PASS: 'root'
            restart: always
            volumes:
                - "./db:/var/lib/mysql"
                - "./conf/my.cnf:/etc/my.cnf"
                - "./init:/docker-entrypoint-initdb.d/"
            ports:
                - "3306:3306"
           
    

    配置promethus.yaml 文件

    global:
      scrape_interval: 15s  
    scrape_configs:
      - job_name: 'node'
        static_configs:
          - targets: ['8.130.12.208:9100']
          - targets: ['8.130.8.46:9100'] 
         
    

    grafana 容器启动起来后,使用浏览器打开 http://127.0.0.1:3000 会显示grafana界面,默认用户名和密码是admin/admin 。

    进入grafana 界面后,先配置promethus数据源


    image.png

    再配置influxdb的数据源


    image.png

    infulxdb 需要配置事先创建好的数据库


    image.png

    再添加显示的模块,进入https://grafana.com/grafana/dashboards 查找需要的模板
    有2种方式可以导入模板

    image.png

    1是直接上传下载好的json文件,2是再模板详情页面有一个id复制这个id 进行导入

    image.png
    • 如何在外部使用root连接这个mysql? 为了安全,首先需要设置root帐号的密码,先将当前库切到mysql
    mysql> use mysql
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    
    10. 设置root账户的密码为root
    
    
    mysql> update user set authentication_string = password('root') where user = 'root';
    Query OK, 4 rows affected (0.00 sec)
    Rows matched: 4  Changed: 4  Warnings: 0
    
    11. 给所有root用户赋权,外部的电脑也能够通过root访问Docker中的mysql数据库
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    Query OK, 0 rows affected (0.00 sec)
    
    

    相关文章

      网友评论

          本文标题:记一次性能测试过程

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