【内容或版权原因,部分内容未显示】

目录

测试资源

  • 1台被压测机器
    • centos版本信息参考线上服务器
    • 双核4G
    • 业务服务部署:ws服务(golang实现websocket的一个服务)、redis服务(本地6379端口)
    • 监测服务:prometheus、grafana、cacti。需要监测服务器资源使用情况、需要监测go服务使用情况
    • 系统配置调整:ulimit
  • 2台压力机器
    • 双核2G内存
    • ubuntu18及以上。
    • 服务部署:最新jdk、jmeter服务安装与配置(slave)
  • 1台压力控制机
    • 单核1G内存,连接操作顺畅即可
    • 服务部署:最新jdk、jmeter服务安装与配置(master)
  • 其他
    • 竞价实例
    • 4台机器在同一个局域网内
    • 关闭防火墙

测试环境准备

系统配置调整

  • ulimit调整系统文件

    临时调整了ulimit为50000,默认是1024,会影响数据库、redis等服务连接数

    修改/etc/security/limits.conf文件,在文件中添加如下行,修改系统对所有用户的软限制(软限制是指限制用户同时打开的文件数目,硬限制是指系统根据硬件资源(主要指内存)计算出来的最多可打开的文件数目)

    * soft nofile 60000
    * hard nofile 60000
    

redis

yum install redis

定期删除redis所有数据:

flushall

定制ws服务

  • 调整token机制,避免泄露
  • 增加控制端与被控制端连接统计,提供给prometheus采集

分支:jm-loadtest

配置文件:config.cfg(参考测试环境)

jmeter服务

  • jdk

    ubuntu快速安装配置jdk

    master控制机、slave压力机需要使用相同版本的jdk。

  • jmeter

    master控制机、slave压力机安装相同版本的jmeter

    • 下载

      Apache JMeter - Download Apache JMeter

    • 解压到指定位置

      比如unix可以尝试放在/usr/local/jmeter下

      windows环境,解压可以执行GUI界面即可。

    • unix环境配置全局环境变量

      vim /etc/profile

      export JMETER=/usr/local/jmeter
      export PATH=$JMETER/bin:$PATH
      
      source /etc/profile
      
  • 配置master控制机

    修改master控制机bin/jmeter.properties配置,添加需要控制的远程压力机:

    remote_hosts=192.168.232.128:1099
    

    不启用ssl:

    server.rmi.ssl.disable=true
    

    修改bin/system.properties配置,用于告知slave回传数据给master的地址:

    java.rmi.server.hostname=192.168.232.131
    
  • 配置slave压力机

    用于与master的数据传输,比如master发送脚本到slave,salve发送结果给master,修改bin/jmeter.properties配置:

    # RMI port to be used by the server (must start rmiregistry with same port)
    server_port=1099
    
    

    不启用ssl

    server.rmi.ssl.disable=true
    

测试数据

  • 10万个phone用户数据
  • 20万个web用户数据,2个web用户与1个phone用户关联,也就是1个控制端对应2个被控制端

暂时提供csv的参数化方式,没有使用JDBC的方式直接数据库。需要将参数配置数据同时上传到压力机jmeter-server启动的目录下(注意相对路径)

附:测试数据生成存储过程

【内容或版权原因,部分内容未显示】...


pan>"-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m"

注意:setenc.sh文件,因为md文档原因,缺失了shell文件头,需要自己补充

Apache JMeter - User’s Manual: Getting Started

解决3:

由于已经不是堆的问题,超出RAM的问题,只能应加机器,或提升内存。

5、jtl文件太大,在linux上生成报告问题

目前最新的jdk17不支持jmeter在linux上生成报告。

需要降级到jdk16