Skip to content

ppzqh/hertz-benchmark

 
 

Repository files navigation

Hertz-Benchmark

调研其他项目的 benchmark 以及 HTTP 使用场景后,我们觉得 Echo 场景能够反映真实的使用场景。本项目提供若干 HTTP 框架在 Echo 场景下的性能记录。

使用说明

同机压测

执行前请先确认满足环境要求

Server

./scripts/benchmark_server.sh

Client

./scripts/benchmark_client.sh

Profiling

由于默认压测参数会比较迅速完成一次压测,为了获得更长采集时间,可以手动在 ./scripts/env.sh 中调整压测参数 n 大小。

Profiling Server

不同 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

数据 (Echo,100 concurrency,1k Header)

Performance

About

Tracking performance changes for Hertz

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 87.0%
  • Shell 7.5%
  • Python 5.5%