Linux下Go性能瓶颈的常见位置
CPU维度
内存与GC维度
并发与同步维度
I/O与系统资源维度
运行时与框架维度
快速定位方法与工具
Linux 第一性工具
Go 运行时与诊断
典型症状到瓶颈的对照表
| 症状 | 优先怀疑 | 快速验证 | 常见优化 |
|---|---|---|---|
| QPS 上不去、CPU/内存不高 | 带宽打满 | nload/iperf 观察网卡吞吐 | 压缩、批处理、CDN/就近接入、协议升级 |
| P99 抖动、请求卡住 | 锁竞争/阻塞 | pprof mutex/block、trace 看阻塞区间 | 分片锁、无锁队列、减少共享、批量/异步 |
| 负载高但吞吐低 | goroutine 失控/调度争用 | goroutine profile、vmstat 看 cs | worker pool、限流、背压、减少短命 goroutine |
| 内存涨、GC 频繁 | 高频分配/大对象 | heap profile、GOGC 调整、gctrace | sync.Pool、预分配、对象复用、扁平化结构 |
| 磁盘/数据库慢 | I/O 瓶颈/慢查询 | iostat、SQL 慢查询日志 | 索引/分库分表、缓存、异步写、更快存储 |
落地优化要点
并发与并行
内存与GC
I/O 与系统
框架与库