Skip to content

NewAPI Go Binary 性能测试汇总

🕒 Published at:

NewAPI Go Binary 性能测试汇总 ​

测试环境: hi3798mv100 | 4×Cortex A53 @1.5GHz | 723MB RAM | Ubuntu 20.04 测试工具: JMeter 5.6.3 | JDK 8 Corretto-1.8.0_472 测试接口: GET /api/status (Gin + GORM + SQLite, 限流关闭)


有前端 vs 无前端 ​

并发版本体积RPS平均中位P95P99错误率
10有前端127MB34027ms23ms51ms76ms0%
50有前端127MB56674ms71ms126ms158ms0%
50无前端52MB58570ms68ms118ms143ms0%
100有前端127MB384201ms218ms357ms399ms0%
100无前端52MB436168ms175ms315ms366ms0%
200有前端127MB275495ms487ms942ms1.1s0%

去前端收益:

  • 二进制体积: 127MB → 52MB (-59%)
  • 50并发吞吐: 566 → 585 req/s (+3%)
  • 100并发吞吐: 384 → 436 req/s (+14%)

瓶颈分析 ​

指标空闲50并发峰值瓶颈?
CPU 用户态1%60%🔴 应用代码
CPU 内核态1%40%⚠️ 上下文切换
CPU 空闲99%4-8%🔴 CPU耗尽
IO等待0%0%✅
磁盘IO00✅
上下文切换635/s14,263/s⚠️
网络空闲~5MB/s✅

结论: 纯CPU瓶颈, 拐点约42并发, 最优50并发566req/s


编译参数速查 ​

go
// 有前端 (默认)
GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build -ldflags="-s -w"

// 无前端 (体积优化)
GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build -tags no_web -ldflags="-s -w"

// R3路由器 (mipsle)
GOOS=linux GOARCH=mipsle GOMIPS=softfloat CGO_ENABLED=0 go build -tags no_web -ldflags="-s -w"