HTTP 2.0 之压测工具 Jmeter

时间:2022-02-11 03:04:14

年后,德国总部工业平台要做中国本地化,德国的同事过来给我们展示日志的时候,无意间看到了他们应用日志里的 HTTP/2,下意识到,原来他们都已经提供Http 2.0的服务了。

那么问题来了,除了h2load这样的压测工具,可以模拟http/2的客户端以外,作为压测工具的业界大佬,因为灵活,支持多种协议,可测场景丰富而深受我喜爱的Jmeter,是否支持http 2.0呢?回答是肯定的,因为有人(非Apache官方)已经为写好了插件,亲测可用。
下面列出这个大神的github地址,Readme文档已经很详细的介绍了如何使用该插件。

如何真的不想点进去,可以看下面的快速安装和使用步骤 :

Quick Start : 快速安装使用

1.下载alpn-boot的jar包
因为Java 8 以及以下版本不支持http 2, 你需要在maven仓库里下载alpn-boot这个jar包,并把它的配置写入到JVM_ARGS配置里。需要注意的是:下载的apln-boot的版本必须跟你的java版本有对应关系。 比如我家里的jvm是1.8.0_144,我需要对应alpn-boot和jvm版本的对照表,下载相应的apln-boot版本8.1.11.v20170118。

比如我家里的电脑jvm版本是1.8.0_144
HTTP 2.0 之压测工具 Jmeter
那么我需要下载20170118版本.png

2. 修改jmeter.bat或者jmeter.sh文件
比如,我把alpn-booot的文件放在了lib路径下,那么在jmeter.bat文件里添加:

set JVM_ARGS=-Xbootclasspath/p:%JMETER_HOME%/lib/alpn-boot-8.1.11.v20170118.jar

对于其他mac或者linux的用户,其实操作是一样的,在jmeter.sh文件添加:

JVM_ARGS="-Xbootclasspath/p:<path.to.jar>"

3. 安装http 2的插件

  • 如果以前没下载过jmeter plugin mamager的同学,需要先下载Plugins Manager JAR
  • 把该文件放在lib/ext
  • 重启jmeter,你将看到jmeter的插件管理中心在Options路径下
  • 打开avaliable plugins这页面,找到HTTP/2 Sampler, 点击安装,等待片刻...
HTTP 2.0 之压测工具 Jmeter
Http/2 安装成功.png
  • 成功添加采样器HTTP 2 Request

    HTTP 2.0 之压测工具 Jmeter
    成功添加HTTP 2的采样器.png
  • 尝试用HTTP 2协议给www.taobao.com发送请求

HTTP 2.0 之压测工具 Jmeter
jmx文件.png
  • 在View Result Tree Http2查看结果。 注意,http 2的结果要在Http 2里查看, 原因有兴趣的朋友可以看看如下:

The View Results Tree Listener isn’t fit for HTTP/2, which can send more than one request at the same time without waiting for a response. Using the regular listener means we won’t be able to see the responses of all asynchronous requests. To solve this problem, you can use the View Result Tree Http2. This specialized listener provides a way to visualize a request that has not received a response yet. These requests will be written in blue, as you can see in the image below. When the response is received, the writing will turn immediately to black, and you will be able to see the response message.

HTTP 2.0 之压测工具 Jmeter
Taobao使用的是http 2协议.png

关于Http 2采样器上各个参数的含义和设置问题,还是一定要回头认真看看GitHub上的Readme,人家小哥哥写的很清楚哒。

重要的事情再说一次: GitHub Readme

以上。

本来想试试被Anoyi大神安利的压测工具: Gatling,可惜Gatling好像目前不支持Http 2,但是它用的并行框架AKKA的确很好的解决了Jmeter一个用户一个线程消耗资源的情况,但是貌似Devops更倾向用Gatling, 而专职测试的更喜欢Jmeter, 毕竟Jmeter的历史悠久,支持的协议和功能非常多。总之,很想尝试下Gatling带来的高并发的快感。

至于jmeter如何跟实时序列数据库influxdb传递实时测试数据,并把数据送到 grafana进行数据的展示,准备下周再写了。

作者:科学Jia
链接:https://www.jianshu.com/p/490ab46d8160
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。