go中提供了pprof包来做代码的性能监控,在两个地方有包:

  • net/http/pprof
  • runtime/pprof

其实net/http/pprof中只是使用runtime/pprof包来进行封装了一下,并在http端口上暴露出来。

使用 net/http/pprof 做WEB服务器的性能监控

如果你的go程序是用http包启动的web服务器,想要查看自己的web服务器的状态。这个时候就可以选择net/http/pprof。

 import _ "net/http/pprof"

  然后就可以在浏览器中使用http://localhost:port/debug/pprof/ 直接看到当前web服务的状态,包括CPU占用情况和内存使用情况等。

如果是 gin框架起的web服务, 那么就用这个现成的包即可:  https://github.com/DeanThompson/ginpprof

如果是 beego框架起的web服务, 那再配置文件中直接开启就可以了.  beego参考文档

cpu分析

命令行执行:

go tool pprof http://192.168.2.60:8101/debug/pprof/profile

  然后进入30s的收集信息时间, 此30s内, 可以进行压力测试
收集结束后, 可以调用web, top等工具进行查看.

30s的默认时间可以修改, 用 --seconds 10 参数即可, 放到pprof后面, url前面

使用web遇到的错误:

Failed to execute dot. Is Graphviz installed? Error: exec: "dot": executable file not found in $PATH

  这时需要安装 Graphviz 工具.具体怎么安装, 自行百度

堆栈分析

命令行执行:

go tool pprof http://192.168.2.60:8101/debug/pprof/heap

收集结束后, 可以调用web, top等工具进行查看.

参考:

Go tool pprof性能监控调试工具基本使用说明

05-07 15:25