Go-性能调优实战案例

pprof-CPU采样:

采样的是函数调用和占用的时间

100次/s的采样率

采样时间是手动启动到手动结束

pprof-堆内存Heap采样:

通过内存分配器在堆上分配和释放的内存

每分配512KB记录一次

pprof-Goroutine协程&线程创建采样:

记录所有用户发起、运行中的goroutine(入口非runtime开头)

记录程序创建的所有系统线程的信息

上面两者比较类似

pprof-Block&Mutex采样:

采样的是block的次数和耗时 阻塞得超过阈值才被记录

采样的是争抢锁的次数和耗时 只记录固定比例的锁操作

实际生产过程中性能优化

  1. 业务服务优化
  2. 基础库优化
  3. Go语言优化

如下

  1. 业务服务优化:

服务是:单独部署、有功能

有调用链路

单独的benchmark无法满足复杂逻辑分析 压测(单机器 集群)

性能数据采集(单机器 集群分析)
火焰图看占用比较长的-定位代码-找到问题

并且问题还有:cpu占用80%和40%的数据是不一样的 都采样一下

做完优化还不能直接上线-还得再测试一下修改后的

  1. 基础库优化

    AB实验SDK优化 分析基础库的核心逻辑和性能瓶颈 压测验证 落地验证

  2. Go语言优化

    编译器 运行时优化 优化内存分配策略 也是压测-落地

相关推荐
Julien20042 分钟前
管理机密(一)
运维·服务器·开发语言·学习方法
Chen_harmony5 分钟前
七、STL与string类
开发语言·c++
沐晓时光11 分钟前
C语言入门,字符串和字符串函数知识讲解
c语言·开发语言
一条Go17 分钟前
两套权限目录,三重闸门:Alioth 的多租户 RBAC 为什么这么拧
后端·程序员·github
xxxiugou12331 分钟前
C++命名空间与引用全解析
开发语言·c++
Tokenfree34 分钟前
把多模态 OCR 接进业务系统:四千张运单,三个坑
后端
用户8593130613540 分钟前
我给 AI Agent 写了个下载器:293KB 的网页,不再吃掉 7 万 token
后端
phil61 小时前
沙箱核心功能系列 06:编排调度与资源管理
后端
小兔子1 小时前
if (system(cmd) != 0) 判不出命令失败:它返回的是等待状态,不是退出码
后端
艾迪的技术之路1 小时前
16k 条慢查询,128 张分表,我这么解决
后端·github