• 14.2 Go性能优化


    14.2 Go性能优化

    优化手段

    1.减少HTTP请求数,合并CSS、JS、图片
    2.使用CDN,就近访问
    3.启用nginx gzip压缩,降低传输内容大小
    4.优化后端api性能
    

    api服务性能优化目标

    1.线上程序是黑盒状态
    2.通过性能分析,可知程序占用多少资源
    3.找到系统瓶颈
    

    go性能优化方向

    1.Cpu维度优化
    2.Mem维度优化
    3.锁竞争维度的优化
    

    1.1. 性能优化原理

    1.知道程序占用了多少资源,如cpu,内存量
    2.知道程序的函数占用资源比例
    3.如有A,B两个数据就可以快速定位到系统瓶颈
    4.通过pprof,每隔一段时间10ms采集当前堆栈信息,获取各个函数占用的cpu以及内存资源
    pprof完毕后,通过对数据进行分析,形成分析报告。
    

    CPU性能优化

    import ("runtime/pprof")//采集性能分析的数据
    开始cpu性能分析,pprof.StartCPUProfile(w io.Writer)
    停止CPU性能分析  pprof.StopCPUProfile()
    

    1.1.1. PProf

    想要进行性能优化,首先瞩目在 Go 自身提供的工具链来作为分析依据,本文将带你学习、使用 Go 后花园,涉及如下:

    • runtime/pprof:采集程序(非 Server)的运行数据进行分析
    • net/http/pprof:采集 HTTP Server 的运行时数据进行分析

    pprof 是用于可视化和分析性能分析数据的工具

    pprof 以 profile.proto 读取分析样本的集合,并生成报告以可视化并帮助分析数据(支持文本和图形报告)

    profile.proto 是一个 Protocol Buffer v3 的描述文件,它描述了一组 callstack 和 symbolization 信息, 作用是表示统计分析的一组采样的调用栈,是很常见的 stacktrace 配置文件格式

    1.1.2. 支持什么使用模式

    • Report generation:报告生成
    • Interactive terminal use:交互式终端使用
    • Web interface:Web 界面

    1.1.3. 可以做什么

    • CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主动消耗 CPU 周期时花费时间的位置
    • Memory Profiling:内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏
    • Block Profiling:阻塞分析,记录 goroutine 阻塞等待同步(包括定时器通道)的位置
    • Mutex Profiling:互斥锁分析,报告互斥锁的竞争情况
  • 相关阅读:
    学习笔记
    聊聊字节序
    SPDK发送和接收连接请求的处理
    企业设备维护——不仅仅是解决问题
    怎样快速找到某一行代码的git提交记录
    生产环境中利用软链接避免"rm -rf /"的方法
    程序员五年小结
    Django Model 数据库增删改查
    python中字符串列表字典常用方法
    python编辑配置
  • 原文地址:https://www.cnblogs.com/open-yang/p/11256986.html
Copyright © 2020-2023  润新知