课程介绍
随着大数据时代的快速到来,以及大数据在生产生活中迅速应用,大数据领域如雨后春笋般的出现大量的新技术,如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语言成功优化案例讲解 |