Jmeter进行TCP压力测试
1.启动Jmeter后,在左侧测试计划节点,右键“添加”-》“线程”-》“线程组”
2.在新增的线程组节点上。右键“添加”-》“取样器”-》“TCP取样器”
3.在线程组节点上,再右键“添加”-》“监听器”-“察看结果树”
构建完成后如下图:
4.设置并发相关参数是在线程组中,线程数即为并发数,其他具体参数见附件,如下图:
5.在TCP取样器中,设置TCP请求的参数,主要设置的参数为:
(1)TCPClient classname:org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl
TCPClient classname 该参数一般有三个值设置:
- org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl(以文本编辑器中的纯文本作为内容发送)
- org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl(以文本编辑器中所编辑的16进制字符(hex)内容为基础转换为二进制的字节内容进行发送)
- org.apache.jmeter.protocol.tcp.sampler.LengthPrefixedBinaryTCPClientImpl(在BinaryTCPClientImpl基础上默认以发送内容的长度以字节前缀进行填充)
(2)服务器IP和端口号:输入自定义的即可
(3)End of line(EOL) byte value: 这个参数和服务器返回的数据有关,是数据器服务流的一个结束标识。没有设置EOL将会一直读到输入流结束为止。比如服务器返回的字符串是:abc},}符号在ascii码表中对应的10进制为125,这里就填125。
(4)要发送的文本,这里就填要发送的文本内容
6.点击Jmeter运行按钮
即可完成并发操作。
附:
通过python创建一个TCP Server服务器,当接收到TCP请求后,响应字符串{get out}
import socket
import sys
def start_tcp_server(ip, port):
# create socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = (ip, port)
# bind port
print 'starting listen on ip %s, port %s' % server_address
sock.bind(server_address)
# starting listening, allow only one connection
try:
sock.listen(1)
except socket.error, e:
print "fail to listen on port %s" % e
sys.exit(1)
while True:
print "waiting for connection"
client, addr = sock.accept()
print 'having a connection:',addr
client.send("{get out}")
client.close()
if __name__ == '__main__':
start_tcp_server('192.168.31.3', 48569)
Server启动后,在jmeter中运行发送TCP请求,在察看结果树中可以看到TCP请求成功
我们通过Jmeter请求的 Hello World
得到响应数据 {get out}