调研其他项目的 benchmark 以及 HTTP 使用场景后,我们觉得 Echo 场景能够反映真实的使用场景。本项目提供若干 HTTP 框架在 Echo 场景下的性能记录。
执行前请先确认满足环境要求
./scripts/benchmark_server.sh
./scripts/benchmark_client.sh
由于默认压测参数会比较迅速完成一次压测,为了获得更长采集时间,可以手动在 ./scripts/env.sh 中调整压测参数 n 大小。
不同 server 的 port 映射参见相应脚本,如:
cat ./scripts/benchmark_pb.sh
# ...
repo=("hertz" "fasthttp" "gin" "fasthttp_timeout")
ports=(8000 8001 8002 8003 8004)
获取到对应 server 端口号后,执行:
go tool pprof localhost:{port}/debug/pprof/{pprof_type}
- OS: Linux
- 默认依赖了命令 taskset, 限定 client 和 server 运行的 CPU; 如在其他系统执行, 请修改脚本。
- CPU: 推荐配置 >=20核, 最低要求 >=4核
- 压测脚本默认需要 20核 CPU, 具体在脚本的 taskset -c ... 部分, 可以修改或删除。
相关说明:
该压测数据是在调用端有充分机器资源压满服务端的情况下测试,更侧重于关注服务端性能。后续会提供调用端性能数据情况。
- CPU: Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz
- 运行限定 server 4-CPUs,client 16-CPUS
- OS:Debian 5.4.56.bsk.9-amd64 x86_64 GNU/Linux
- Go: 1.16.5