4006-998-758
3000+课程任你选择
Go语言性能优化
研发学院 GO语言 GC 性能优化 开课时间:2021-07-28
尹立庆

多年从事容器技术、云计算、物联网研发工作经验。北航移动云计算硕士。Cloudera大数据认证(图1),项目管理师(PMP)认证(图2),主要研究方向包括容器技术、云计算、物联网、项目管理等;曾就职于阿里等互联网企业,IBM、华为等知名大型企业,现任某大型知名互联网企业首席架构,负责容器技术、云计算、物联网、PaaS平台研发工作。

IT从业近二十年,秉承理论与实践相结合,在学习中实践,在实践中学习,积累了丰富的理论与实践经验,并且乐于将自己的经验分享。尹老师具有敏锐的目光与头脑,发现并集成整合社会资源,为企业节省资源并创造价值,达到为合作伙伴创收的目的。曾为多家国内知名企业提供培训与咨询,包含阿里集团、华为、中国移动、中国电信、中国联通、当当网、中石油、中石化、中国电网、中国银行、中国工商银行、浦发银行、阿尔卡特朗讯、中航国际等。拥有云计算、物联网、大流量、高并发、分布式的大型网站架构和设计经验。曾主导过多个云计算、物联网、私有云、公有云建设项目,早些年也主导过ERP、CMS等软件项目,积累了丰富的实践经验,这些项目中包含多个数百万、上千万的大型项目。项目经历:呼叫中心人工智能客服研发项目、贵州省政府云呼叫中心建设项目、广东发展银行电营、运维大数据分析项目、中石油工程设计西南分公司云计算项目评审委员、中石油大数据挖掘项目,电商库存预测大数据分析项目、大型ERP、电子商务、CRM、电子政务等多个项目。


查看老师详情
课程内容

课程介绍


随着大数据时代的快速到来,以及大数据在生产生活中迅速应用,大数据领域如雨后春笋般的出现大量的新技术,如Go语言等技术,其中Go语言已经成为编程语言中重要的一部分,被越来越多的企业所使用。为了使Go语言处理速度更快,效率更高,在使用过程中不可避免的需要进行一系列的性能优化。本培训尹老师总结和归纳多年Go语言工作经验,对Go语言技术的性能调优进行深入剖析,使学员从实操层面、架构层面到核心原理层面进行调优,并通过生动的案例展示优化过程与效果,调优的范围包括Go的GC,网络优化,性能优化工具介绍及其使用以及Go内存模型,常见性能优化手段,常用的系统及网络优化参考,使用不规范造成的性能问题,成功优化案例讲解等。


课程目标


1、 Go语言性能优化,主要包括Go语言的GC、Go语言的性能优化工具介绍及其使用;

2、 Go语言内存模型,常见性能优化手段;

3、 Go语言网络优化、Go语言常用的系统及网络优化参考;

4、 Go语言使用不规范造成的性能问题,成功优化案例讲解;


课程形式


以课堂讲解、演示、案例分析为主,辅以互动研讨、现场答疑、学以致用。



课程对象


1、 本课程适合于Go语言开发工程师;

2、 本课程适合于高级开发工程师、项目经理、技术总监;

3、 本课程适合于企业技术管理人员;

4、 本课程适合于IT运维人员;



课程大纲


时间

内容

第一天

第1个主题:   Go语言性能优化(深入剖析Go语言性能优化)(90分钟)

1、 Go语言性能优化

2、 Go语言性能优化主要方面

a)     CPU性能优化

b)     内存性能优化

c)     堆栈性能优化

d)     Goroutine性能优化

e)     锁性能优化

f)      网络性能优化

g)     代码编写性能优化

h)     架构设计性能优化

3、 使用不规范造成的性能问题

4、 实操演示:Go语言性能优化

 

第2个主题:   Go语言的GC原理(深入剖析Go语言的GC)(90分钟)

1、 Go语言的GC原理

2、 什么是垃圾回收

3、 内存泄露检测工具

4、 智能指针

5、 Golang的GC背景

6、 Golang的GC相关问题

7、 Go语言的GC特征

8、 三色标记法

9、 Mark and   Sweep算法

10、 三色标记法触发条件

11、 三色标记法的具体过程

12、 Golang中的GC是如何工作的

13、 如何优化GC

14、 硬性参数

15、 使用gdb调优

16、 减少对象分配尽量重用对象

17、 函数编码参数调优

18、 数组的空间规划

19、 写代码时要避免要用string+操作

20、 尽量复用小对象

21、 局部变量尽量少声名

22、 多个小对象可以放到一个结构体中

23、 如何测量GC

24、 案例:Go语言的GC案例

 

第3个主题:   Go语言的性能优化工具介绍及其使用(介绍Go语言的性能优化工具介绍及其使用)(90分钟)

1、 Go语言的性能优化工具介绍及其使用

2、 Go语言采集性能数据

3、 Go语言内置采集程序运行数据的工具

4、 runtime/pprof

5、 net/http/pprof

6、 利用runtime/pprof工具采集运行数据

7、 利用runtime/pprof应用性能分析

8、 利用net/http/pprof工具采集运行数据

9、 利用net/http/pprof应用性能分析

10、 获取函数占用的CPU以及内存资源

11、 profiling报告保存到文件

12、 CPU性能分析

13、 开启CPU性能分析

14、 停止CPU性能分析

15、 使用go   tool pprof工具进行CPU性能分析

16、 内存性能优化

17、 记录程序的堆栈信息

18、 使用go   tool pprof工具进行内存性能分析

19、 实操演示:Go语言的性能优化工具介绍及其使用案例

 

第4个主题:   Go语言内存模型(深入剖析Go语言内存模型)(90分钟)

1、 Go语言内存模型

2、 常见的垃圾回收模型

3、 引用计数(reference counting)

4、 标记-清除(mark and sweep)

5、 分代收集(generation)

6、 GO语言的垃圾回收器

7、 GO语言的垃圾回收器历史介绍

8、 GO语言的内存回收存在的问题

9、 Go程序内存占用大的问题

10、 Go的垃圾回收触发阈值

11、 操作系统采取“延迟回收”策略

12、 GC时间长的问题

13、 Goroutine内存泄露的问题

14、 堆内存泄漏(Heap leak)

15、 系统资源泄露(Resource Leak)

16、 实操演示:Go语言内存模型案例剖析

时间

内容

第二天

第5个主题:   Go语言常见性能优化手段(深入剖析Go语言常见性能优化手段)(90分钟)

1、 Go语言常见性能优化手段

2、 go tool   pprof命令

3、 命令行交互界面

4、 go tool   pprof命令参数解读

5、 图形化界面

6、 安装graphviz图形化工具

7、 go-torch和火焰图

8、 火焰图(Flame Graph)

9、 安装go-touch

10、 安装FlameGraph

11、 压测工具wrk

12、 使用go-torch

13、 pprof与性能测试结合

14、 Gin框架中使用pprof

15、 下载Gin框架专用pprof包

16、 项目中添加Gin框架

17、 编译并运行代码生成/debug/pprof的API

18、 使用go   tool pprof采集数据

19、 go tool   pprof命令行交互界面

20、 实操演示:Go语言常见性能优化手段调优案例

 

第6个主题:   Go语言网络优化(深入剖析Go语言网络优化)(90分钟)

1、 Go语言网络优化

2、 服务型应用

3、 WEB应用

4、 使用net/http/pprof库分析HTTP服务

5、 gin框架

6、 HTTP服务的/debug/pprof   endpoint

7、 /debug/pprof/profile

8、 /debug/pprof/heap

9、 /debug/pprof/block

10、 /debug/pprof/goroutines

11、 实操演示:Go语言网络优化案例

 

第7个主题:   Go语言常用的系统及网络优化参考(深入剖析Go语言常用的系统及网络优化参考)(60分钟)

1、 Go语言常用的系统及网络优化参考

2、 Linux内核参数

3、 硬性参数

4、 系统运行参数设置

5、 Go语言网络优化参考

6、 使用gdb调优

7、 实操演示:Go语言常用的系统及网络优化参考案例

 

第8个主题:   Go语言使用不规范造成的性能问题(深入剖析Go语言使用不规范造成的性能问题)(60分钟)

1、 Go语言使用不规范造成的性能问题

2、 Go语言代码编写不规范造成的性能问题

3、 Go语言运行环境参数设置造成的性能问题

4、 案例:Go语言使用不规范造成的性能问题

 

第9个主题:   Go语言成功优化案例讲解(深入剖析Go语言成功优化案例讲解)(60分钟)

1、 Go语言成功优化案例讲解

2、 优化案例代码介绍

3、 编译过程优化

4、 代码优化

5、 参数优化

6、 案例:Go语言成功优化案例讲解


返回上一级