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)breakprint("客户端发送的内容:",data.decode(COD))if not data:breakmsg = 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.gz3、配置
cd /usr/
mkdir java
cd java/
mv /root/jdk8u292-b10/ .
cd jdk8u292-b10/
pwd
/usr/java/jdk8u292-b104、配置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.zip3、配置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.1Copyright (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
完
往期推荐
shutil | 高阶文件操作
OS | 被你小看的实用库!
来了,他来了,他终于来了!
Jmeter怎么获取token?
loguru | Python日志神器
Python中的那些随机操作
用Python操作配置文件,超简单
FastApi-01-初识
点亮在看!
Jmeter测试TCP百万连接相关推荐
- jmeter测试TCP服务器/模拟发送TCP请求
jmeter测试TCP服务器,使用TCP采样器模拟发送TCP请求. TCP采样器:打开一个到指定服务器的TCP / IP连接,然后发送指定文本并等待响应. jmeter模拟发送TCP请求的方法: 1. ...
- JMeter测试TCP/IP Socket应用的性能
摘要 本文描述了如何利用JMeter来测试TCP/IP Socket应用的性能.文章先对Socket作了一点简单介绍,然后提供并解释了两个样例Socket应用,最后介绍如何利用JMeter来对它们进行 ...
- tcp 远程服务器,C#编程学习之使用TcpClient / BeginConnect测试远程服务器tcp端口连接-网络教程与技术
-亦是美网络...
有时候经常需要对一些服务器的端口进行tcp连接测试,通常使用"telnet IP地址 端口号"的方式即可,不能说这种方式不可取,只是使用起来比较麻烦,本着简单好用的目的,不如我们自 ...
- TCP长连接和短连接代码及其比较
前言: 最近又看到了关于TCP长连接和短连接的概念,以前也看过Http长连接和短连接的概念,因为Http是建立在TCP协议之上的,所以它其实是依赖TCP的长连接和短连接.所以,我就萌生了一个想法,看看 ...
- jmeter 压力测试tcp
cmd下管理员执行 jmeter 界面 英文版 中文切换以后不能执行 最多跑905个线程 线程限制 查看结果数 界面会跑死 windows环境 注意:测试1万的tcp并发连接 大爷的 window最 ...
- jmeter 用户数 线程数_如何使用jmeter编写TCP测试脚本
创建线程组 新建线程组后,会出现一个线程组的配置界面,如下 Number of Threads(users):这是 JMeter 中的线程数,也可以称之为用户数,是产生TPS的,至于产生多少的TPS取 ...
- 一文搞定Netty,打造单机百万连接测试!
文章目录 1.Netty框架简介 1.1.Netty简介 1.2.Netty主要特性 1.3.Netty和Tomcat的区别 1.4.BIO编写Client-Server通信 2.常见的网络IO模型 ...
- jmeter tcp长连接性能测试
jmeter除了可以做http测试,还支持tcp长连接 图中的Ramp-Up Period需要注意,它表示启动所有线程花费的时间,如图所示,设置为40秒,jmeter会自动计算每秒应该启动多少个线程. ...
- Netty 单机百万连接测试
1.Netty框架简介 1.1.Netty简介 netty是jboss提供的一个java开源框架,netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可用性的网络服务器和客户 ...
最新文章
- VS Code运行Python程序
- ASP.NET学习笔记(11)--ASP简介
- 【HYSBZ - 2763 】飞行路线 (分层图最短路,最短路dp)
- RTMP中FLV流到标准h264、aac的转换
- FTP相关命令(手机FTP服务启动应用)
- linux java运行class文件_jvm学习java文件运行过程
- keepalived高可用配置注意事项
- 三菱PLC编程软件 GX Developer 8.86 中文版的下载与安装 (win 7 64位)
- Word转换PDF:pdf虚拟打印机怎么用操作技巧详解
- 2019最新《网易云课堂 C++收银系统项目实战教程》 C++开发网吧收银系统(MFC+ADO)
- 模块度Q——复杂网络社区划分评价标准
- ANSYS 有限元分析 修改与编辑
- java程序的结构与类型实验报告_20172301 《Java软件结构与数据结构》实验三报告...
- UART和RS232/RS485的关系是什么?
- 网站被攻击如何查找木马文件 以及攻击者IP
- 谷歌提前关闭 G+;春运 12 天后开售,“候补购票”功能将上线 12306
- mybatis generator 自动生成 在线生成器 生成service controller 含基础增删改查 自动生成工具 只需要建表SQL语句
- arch使用create_ap创建wifi热点
- linux查看指定目录下各个文件大小以及总体大小
- [翻译Pytorch教程]NLP部分:使用TorchText进行文本分类