h2load HTTP2 性能测试

项目用到http2性能测试,经研究,开源软件jmeter不能很好的支持,因为jmeter的http2只支持发送https的请求,而项目是用到非加密的http,故无法使用。后来经查找,发现h2load【官网:https://nghttp2.org/documentation/h2load-howto.html】能很好的进行http2的性能测试,示例如下:

h2load HTTP2 性能测试

因为网上对于h2load的资源比较少,这里简单记录一下我的使用方法理解及踩过的坑:

1.安装

apt install nghttp2-client  就好了

检查是否安装成功【查看帮助文档】:

h2load HTTP2 性能测试

2 使用方法:

1)GET

直接h2load加上url即可,后面不加 -n -c -r 之类的参数则表示使用的默认参数,如-n -c -r 默认都是1

h2load http://172.19.0.3:80/metrics

2)POST/PUT/DELETE方法

h2load 携带data数据方法是:-d 后面加数据存放路径及文件名,如我的数据如***意格式是json)

h2load HTTP2 性能测试

h2load HTTP2 性能测试

3 )使用例子

h2load http://10.42.1.251:80/nssf-mgmt/network-slice-instance -d /root/lin/h2load/add_nsi_1.json -H "Content-Type: application/json" -H ":method:POST"

h2load HTTP2 性能测试

h2load 发 PUT 以及 DELETE 请求与上面类似,把 -H ":method:POST" 改一下即可:

h2load http://10.42.1.251:80/nnssf-nssaiavailability/v1/nssai-availability/comsumersnfid -d /root/lin/h2load/ava_put.json -H "Content-Type: application/json" -H ":method:PUT"

h2load HTTP2 性能测试

4)参数

-n 发送的总请求数,如只加 -n3其实是 -n3 -c1 -r1 表示 一秒内启动一个client,这个client发送了3条requests

h2load HTTP2 性能测试

-c 启动的client 总数,如 -n3 -c3 -r1,则表示一秒内启动3个client,然后每个client发送1条requests

h2load HTTP2 性能测试

h2load HTTP2 性能测试

-r 启动的速率,如-n300 -c30 -r10  表示一秒启动10个client,然后每个client发送10条requests信息【-n数量除以-c client数】,然后持续发送 3秒(默认 --rate-period == 1s)

- p 协议,可选有http2 和 http1.1 默认 http2 。想改成http1.1 加上 “-p http/1.1”即可

-D持续时间,即 -D 10表示我就持续发送10s的请求,注意,这里是发送一个请求,等待收到响应后再发送下一个,直到-D时间结束。这里并不是并发。

-d 携带的数据

一般来说,测试瞬时并发 我一般用如 -n3000 -c100 -r100,表示在一秒内启动同时启动100个client,然后每个client发送30条requests数据,总共并发3000条请求过去。

持续并发,使用如 -n9000 -c300 -r100,表示每秒启动同时启动100个client,然后每个client发送30条requests数据,持续3秒。也是每秒共并发3000条过去,持续3秒,共计9000条请求。