Jmeter测试TCP最大连接数

简介: Jmeter测试TCP最大连接数

网络异常,图片无法展示
|


背景


近期有个需求,需要测试下 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 表示。此次测试服务端返回的最后一个字符为"}",故 EOL125


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 台测试机上,JDKJmeter 的安装都是如此。接下来对测试机上的 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
复制代码


测试过程中控制台会打印部分日志,详细结果可以在 JmeterGUI 中添加监听器,然后从 jtl 文件中读取结果。


服务端查看连接数


netstat -ant |grep 9999
相关文章
|
4月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
627 0
|
3月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
824 10
|
3月前
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
501 0
|
3月前
|
安全 网络安全 数据安全/隐私保护
解决SSH测试连接GitHub时出现“connection closed by remote host”的问题。
然后使用 `ssh -T git@ssh.github.com`来测试连接。
446 0
|
5月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
950 23
|
7月前
|
数据可视化 测试技术 API
JMeter、Apipost 与 Postman 的 API 测试对比:为什么 APIPost 是更聪明的选择
API测试如同筹备一场晚宴,选对工具至关重要。JMeter功能强大但上手难,适合专业用户;Postman简单易用,但在复杂场景和团队协作中表现有限;而Apipost则是一款智能高效的“厨房神器”。它性能测试轻松、结果清晰、学习门槛低,并且能一键集成CI/CD流程。对于追求效率与便捷的团队而言,Apipost无疑是更优选择,让API测试如同五星大厨烹饪般丝滑流畅。
|
8月前
|
druid Java 数据库连接
【YashanDB 知识库】druid 连接池做断网测试,无法自动重新连接
【YashanDB 知识库】druid 连接池做断网测试,无法自动重新连接
|
10月前
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
346 1
Jmeter如何对UDP协议进行测试?
|
8月前
|
druid Java 数据库连接
【YashanDB知识库】druid连接池做断网测试,无法自动重新连接
【YashanDB知识库】druid连接池做断网测试,无法自动重新连接
|
8月前
|
监控 API 开发工具
Socket.IO介绍,以及怎么连接测试Socket.IO接口?
Socket.IO 是一个用于浏览器和服务器间实时双向通信的库,支持低延迟消息传递、跨平台运行及自动重连。文章介绍了其特点与调试需求,并详细说明如何使用 Apifox 工具创建、连接、发送/接收 Socket.IO 事件,以及团队协作和调试技巧。掌握这些技能可提升实时应用开发效率与质量。