Fiber 官方还有一页专门叫 “Make Fiber Faster”。
它的核心态度其实很成熟:
先保证稳定,再在明确瓶颈处提速。
#1. JSON 编解码是常见瓶颈点
官方文档说明,Fiber 默认用标准库 encoding/json,如果你真测出来这里是瓶颈,可以换更快的实现:
import "github.com/goccy/go-json"
app := fiber.New(fiber.Config{
JSONEncoder: json.Marshal,
JSONDecoder: json.Unmarshal,
})这件事的正确顺序是:
先压测
▼
找到瓶颈
▼
确认是 JSON 编解码
▼
再替换而不是:
“我听说这个库快,所以先全换了再说。”
#2. Prefork 是真加速手段,但不是免费午餐
Fiber 的 ListenConfig 支持:
app.Listen(":3000", fiber.ListenConfig{
EnablePrefork: true,
})它会开启多进程监听同一端口,适合利用多核。
但它不是“开了就一定更好”,因为还会带来:
- 进程数增加
- 部署和调试复杂度上升
- 某些全局状态使用要更谨慎
所以它更像:
给快线城区开多条并行高架。很强,但不是新手村第一天就该开的选项。
#3. 真正的 Fiber 性能观
Fiber 最值得学的,不是“某个 benchmark 图”。
而是这条工程纪律:
- 少不必要分配
- 少不必要复制
- 少不必要抽象层
- 快路径保持干净
- 但为了快,不要牺牲系统可观测性和正确性