We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
常常需要对Golang进行优化,在这里总结一下Golang常用的调优技巧和流程。
常用的生成数据文件的方式有三种:
1、挂载profile handler到HTTP Server上。 该方法常常应用到HTTP Server上,监听运行中的服务状态。基本步骤为:
debug/pprof
详细内容参考:net/http/pprof
2、使用runtime/pprof输出数据文件。 该方法的基本原理是,找到需要调优的热点代码块,
runtime/pprof
详细内容参考:runtime/pprof
3、编写压力测试用例(Benchmark)输出数据文件。 该方法的基本原理是:对热点函数编写对应的压测用例,运行压测输出profile数据文件。基本流程为:
go test -cpuprofile cpu.prof -memprofile mem.prof -bench .
详细内容参考:
经过上面的流程,可以获取对应的profile数据文件。使用使用go tool pprof cpu.prof/mem.prof打开对应的数据文件。
go tool pprof cpu.prof/mem.prof
工具界面如下,
常用的命令有:
list func1
更详细的可以参考:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
常常需要对Golang进行优化,在这里总结一下Golang常用的调优技巧和流程。
调优步骤
详细过程
如何生成profile数据文件
常用的生成数据文件的方式有三种:
1、挂载profile handler到HTTP Server上。
该方法常常应用到HTTP Server上,监听运行中的服务状态。基本步骤为:
debug/pprof
相应的接口输出数据文件详细内容参考:net/http/pprof
2、使用
runtime/pprof
输出数据文件。该方法的基本原理是,找到需要调优的热点代码块,
详细内容参考:runtime/pprof
3、编写压力测试用例(Benchmark)输出数据文件。
该方法的基本原理是:对热点函数编写对应的压测用例,运行压测输出profile数据文件。基本流程为:
go test -cpuprofile cpu.prof -memprofile mem.prof -bench .
详细内容参考:
如何分析profile数据文件
经过上面的流程,可以获取对应的profile数据文件。使用使用
go tool pprof cpu.prof/mem.prof
打开对应的数据文件。工具界面如下,
常用的命令有:
list func1
,查看函数func1中的详细消耗情况。更详细的可以参考:
The text was updated successfully, but these errors were encountered: