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语言优化

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

相关推荐
李迟几秒前
Golang实践录:工程框架实践:搭建工程模板
开发语言·后端·golang
纪伊路上盛名在1 分钟前
Kabsch算法的Julia实现
开发语言·算法·julia·序列分析·蛋白质·rmsd
玖玥拾5 分钟前
Lua 基础语法(三) 元表 metatable、元方法、模拟面向对象
开发语言·unity·lua
Lynko6 分钟前
C语言指针高阶
后端
the局外人6 分钟前
学习 FastAPI 的 Day 2:用异步 ORM 完成增删改查
后端·python·fastapi
维天说11 分钟前
Agent会听人话,反而更难管
java·开发语言·人工智能
SamDeepThinking11 分钟前
if嵌套最好控制在3层以内
java·后端·程序员
苏渡苇14 分钟前
Spring Insight 里上报 Span 为什么用 JDK HttpClient 而不是 RestTemplate
java·后端·spring·spring cloud·springboot·性能监控
tonydf14 分钟前
AI驱动历史项目安全审查
后端·ai编程
会飞的拖把25 分钟前
Python 面向对象编程详解:从类与对象到动态属性方法
开发语言·python