前言:最近有小伙伴问到jmeter怎么发送http2协议的请求,虽然现在http1.1是主流,只有少数几家大厂用到h2协议,但还是研究了下,做个准备,说不定哪天就用上了。
进入正题。
1.为jmeter安装 HTTP/2 Sampler采样器插件。
安装完成后,jmeter即可添加h2协议的采样器,如图
2.jdk1.8及以下版本不支持h2协议,需要依赖alpn-boot.jar。
需要注意的是,jdk小版本和alpn-boot.jar的小版本是一一对应的,对应关系可前往该网站查看:
如笔者的jdk版本为1.8.0_101,对应的alpn-boot的版本是8.1.9.v20160720。
前往http://mvnrepository.com/artifact/org.mortbay.jetty.alpn/alpn-boot 下载对应版本的jar包保存到本地。
如:set JVM_ARGS= -Xbootclasspath/p:E:/alpn-boot-8.1.9.v20160720.jar
linux/macos 修改jmeter.sh文件,在文件中加入set JVM_ARGS= -Xbootclasspath/p:<path.to.jar>
如:set JVM_ARGS= -Xbootclasspath/p:~/jar/alpn-boot-8.1.9.v20160720.jar
4.启动jmeter,添加h2采样器,以m.jd.com为例,如图:
执行,查看结果树,请求成功:
另外,需要注意的是,h2是一个异步协议,这意味着client不必等待服务器的响应来继续通信。因此,如果我们想要将断言或后处理器添加到h2请求中,即 处理响应,我们需要选中h2采样器中的复选框Synchronized Request来让jmeter在发送更多请求之前需要等待直到收到响应。这个问题我觉得随着jdk1.9或更高版本的普及,httpclient支持h2协议是迟早的事,jmeter也必定会有相应更新,一起期待吧。
以上。还是挺简单的(逃)。