借贵宝地,推介一个HTTP/HTTP2性能测试工具,h2loadrunner,不知是否违反版规
h2loadrunner是一个用于HTTP 1.x / HTTP2的性能测试工具,从nghttp2项目的h2load工具fork并做了一系列改进而来
原本的h2load能生成很大的测试流量,但是缺乏若干必要的功能,比如只能生成单一静态请求,或者重放一系列请求,但是无法动态生成请求,无法在请求之间关联,无法对请求进行定制编程,这些缺失,使h2load无法作为一个生产力工具进行性能测试。
现存其它工具,要么根本不支持HTTP2,比如wrk/wrk2;要么有明显的局限,比如h2load(静态或者重放,envoyproxy/nighthawk实际存在类似局限);比如JMeter + BlazeMeter Plugin(无法支持Stream并发);要么太重不好上手,比如Gatling;甚至又重又有不确定性,比如Locust,看起来很全面,但是是否HTTP2,并不明确。
所以,h2loadrunner在h2load良好性能架构的基础上,进行了若干必备的改进,使得其能满足一个性能测试工具的基本要求:
1. 支持URI和body中的特定变量动态替换
2. HTTP2 Stream超时处理
3. 前后请求之间的跟踪关联(典型场景:5G中的事件订阅更新机制)
4. 支持命令行配置和JSON配置文件,可以通过JSON文件可视化编辑配置数据,方便以直观的方式定制复杂的测试场景模板
5. 支持加载Lua脚本,实现对HTTP / HTTP2 请求消息的完全定制
6. 动态报告测试进度和主要统计数据,并且支持动态改变测试流量大小
在能够动态生成可变消息的前提下,h2loadrunner尽量保持了h2load原本的优势,能够以较少硬件资源,生成较大规模的测试流量。
比如,h2loadrunner生成60K/秒的可变请求,其中有40K的请求带有大约300字节的可变消息体,产生发送并验证这样的测试流量,只需要消耗大约1个CPU逻辑核心。
项目地址:
https://github.com/wallyatgithub/h2loadrunner欢迎提出宝贵意见,或者参与改进项目。
--
修改:wallyz FROM 113.120.108.*
FROM 113.120.108.*