Jmeter测试TCP最大连接数

发表于:2021-7-29 10:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Python测试和开发    来源:掘金

  背景
  近期有个需求,需要测试下 SLB 的四层负载均衡性能,即测试 TCP 的最大连接数和连接速度。本次测试我们选择使用 Jmeter
  单机调试
  编写 TCP 服务端
  #!/usr/bin/python3
  # -*-coding:utf-8 -*-
  from socket import *
  import time
  COD = 'utf-8'
  HOST = '0.0.0.0' # 主机ip
  PORT = 9999 # 端口号
  BUFSIZ = 1024
  ADDR = (HOST, PORT)
  SIZE = 10
  tcpS = socket(AF_INET, SOCK_STREAM) # 创建socket对象
  tcpS.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #加入socket配置,重用ip和端口
  tcpS.bind(ADDR) # 绑定ip端口号
  tcpS.listen(SIZE)  # 设置最大链接数
  while True:
      print("服务器启动,监听客户端链接")
      conn, addr = tcpS.accept()
      print("链接的客户端", addr)
      while True:
          try:
              data = conn.recv(BUFSIZ) # 读取已链接客户的发送的消息
          except Exception:
              print("断开的客户端", addr)
              break
          print("客户端发送的内容:",data.decode(COD))
          if not data:
              break
          msg = time.strftime("%Y-%m-%d %X") #获取结构化事件戳
          msg1 = '[%s]:%s' % (msg, data.decode(COD))
          #conn.send(msg1.encode(COD)) #发送消息给已链接客户端
          conn.send('666}'.encode(COD))
      conn.close() #关闭客户端链接
  tcpS.close()
  编写 Jmeter 脚本
  1、创建线程组
  2、线程组配置
  如上,意为发起 10 万长连接,在 1000 秒内完成,循环一次。
  3、添加 TCP Sampler
  4、配置 TCP Sampler
  具体参数含义可以上网查询,如上,EOL 通常是对应服务端返回的最后一个字符的 byte 表示。此次测试服务端返回的最后一个字符为"}",故 EOL 为 125。
  5、添加结果监听器
  启动服务端,发起测试
  分布式
  由于本次要测试百万链接,所以我们需要提前准备多台 Linux 机器进行测试。
  测试机安装 JDK
  1、下载JDK离线包
  https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/
  2、上传离线包到Linux机器上并解压
  pwd
  /root/
  tar -zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u292b10.tar.gz
  3、配置
  cd /usr/
  mkdir java
  cd java/
  mv /root/jdk8u292-b10/ .
  cd jdk8u292-b10/
  pwd
  /usr/java/jdk8u292-b10
  4、配置profile
  vi /etc/profile
  向profile中增加如下内容
  export JMETER_HOME=/root/apache-jmeter-5.4.1
  export JAVA_HOME=/usr/java/jdk8u292-b10
  export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
  export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin::$JMETER_HOME/bin:$PATH:$HOME/bin
  测试机安装 Jmeter
  1、直接将下载的apache-jmeter-5.4.1.zip文件拷贝到Linux机器上
  2、解压apache-jmeter-5.4.1.zip
  unzip apache-jmeter-5.4.1.zip
  3、配置profile(上面jdk中已经配置好了)
  vi /etc/profile
  向profile中增加如下内容
  export JMETER_HOME=/root/apache-jmeter-5.4.1
  export JAVA_HOME=/usr/java/jdk8u292-b10
  export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
  export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin::$JMETER_HOME/bin:$PATH:$HOME/bin
  检查 JDK 和 Jmeter
  [root@test-2 ~]# java -version
  openjdk version "1.8.0_292"
  OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
  OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)
  [root@test-2 ~]# jmeter --version
      _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____
     / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \
    / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |
   / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
  /_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 5.4.1
  Copyright (c) 1999-2021 The Apache Software Foundation
  [root@test-2 ~]#
  在 21 台测试机上,JDK 和 Jmeter 的安装都是如此。接下来对测试机上的 Jmeter 进行配置
  Jmeter Slave 配置
  1、修改20台slave的server_port
  修改%JMETER_HOME%/bin/jmeter.properties文件中的server_port=7890,这个端口号可以自定义。
  2、生成jks文件
  在master上,执行%JMETER_HOME%/bin/create-rmi-keystore.sh生成rmi_keystore.jks,将这个jks拷贝到20台slave的%JMETER_HOME%/bin/下。
  Jmeter Master 配置
  1、添加remote_host
  修改%JMETER_HOME%/bin/jmeter.properties文件中的添加remote_host=slave1_ip:7890,slave2_ip:7890,slave20_ip:7890
  即将20台slave的ip和端口全部配置进去
  执行测试
  jmeter -JthreadNum=100 -Jtime=200 -n -t /root/TCP.jmx -r -l /root/log.jtl
  # 参数含义
  -n noGUI
  -t jmeter script
  -r remote mode
  -l logs
  测试过程中控制台会打印部分日志,详细结果可以在 Jmeter 的 GUI 中添加监听器,然后从 jtl 文件中读取结果。
  服务端查看连接数
  netstat -ant |grep 9999

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号